質問編集履歴

3

追記カラム名修正

2019/02/22 02:26

投稿

inu_inu
inu_inu

スコア19

test CHANGED
File without changes
test CHANGED
@@ -152,7 +152,7 @@
152
152
 
153
153
  , sum(case tbl1.Number1 when 3 then 1 else 0 end) as countOf_3
154
154
 
155
- , sum(case tbl2.Number2 when 12 then 1 else 0 end) as countOf_4
155
+ , sum(case tbl2.Number2 when 12 then 1 else 0 end) as countOf_12
156
156
 
157
157
  from TABLE1 tbl1 full join TABLE2 tbl2
158
158
 

2

例テーブル修正

2019/02/22 02:26

投稿

inu_inu
inu_inu

スコア19

test CHANGED
File without changes
test CHANGED
@@ -10,11 +10,11 @@
10
10
 
11
11
  下記①②のような表があったとき、IDごとに特定のNumberのカウントを取得するビュー③を作成したいです。
12
12
 
13
- ※①のテーブルではNumber=1 or 2, ②のテーブルではNumber=3だけカウント
13
+ ※①のテーブルではNumber=1~3, ②のテーブルではNumber=12だけカウント
14
14
 
15
15
  ①元テーブル1
16
16
 
17
- |ID|Number|
17
+ |ID|Number1|
18
18
 
19
19
  |:--|:--:|
20
20
 
@@ -22,19 +22,21 @@
22
22
 
23
23
  |高橋|2|
24
24
 
25
+ |高橋|4|
26
+
25
27
  |斉藤|1|
26
28
 
27
- |斉藤|2|
29
+ |斉藤|3|
28
-
29
- |斉藤|2|
30
30
 
31
31
  |斉藤|3|
32
+
33
+ |斉藤|12|
32
34
 
33
35
 
34
36
 
35
37
  ②元テーブル2
36
38
 
37
- |ID|Number|
39
+ |ID|Number2|
38
40
 
39
41
  |:--|:--:|
40
42
 
@@ -42,25 +44,25 @@
42
44
 
43
45
  |林|2|
44
46
 
45
- |林|3|
47
+ |林|12|
46
48
 
47
- |林|3|
49
+ |林|12|
48
50
 
49
51
 
50
52
 
51
53
  ③作成したいビュー
52
54
 
53
- |ID|countOf_1|countOf_2|countOf_3|
55
+ |ID|countOf_1|countOf_2|countOf_3|countOf_12|
54
56
 
55
- |:--|--:|--:|--:|
57
+ |:--|--:|--:|--:|--:|
56
58
 
57
- |田中|1|null|1|
59
+ |田中|1|0|0|0|
58
60
 
59
- |高橋|null|1|null|
61
+ |高橋|0|1|0|0|
60
62
 
61
- |斉藤|1|2|null|
63
+ |斉藤|1|0|2|0|
62
64
 
63
- |林|null|null|2|
65
+ |林|0|0|0|2|
64
66
 
65
67
 
66
68
 

1

提示例誤り

2019/02/22 02:23

投稿

inu_inu
inu_inu

スコア19

test CHANGED
File without changes
test CHANGED
@@ -127,3 +127,41 @@
127
127
 
128
128
 
129
129
  ご教授のほど、よろしくお願いします。
130
+
131
+ 追記
132
+
133
+ ---
134
+
135
+ 正しい例を提示していませんでした。申し訳ございません。
136
+
137
+ 元テーブル1と元テーブル2のカラム"Number"は実際には違うカラム名となります。
138
+
139
+ またyambejp様、sazi様のご回答を参考に実行すると結合された表は作成されるのですが、countof_1~4のsum結果が実際と異なってしまいました。
140
+
141
+ コードを記載します(※また実際と異なるといけないため、条件など実際の環境に合わせたコードを載せています)
142
+
143
+ ```SQL
144
+
145
+ select coalesce(tbl1.ID, tbl2.ID) as ID
146
+
147
+ , sum(case tbl1.Number1 when 1 then 1 else 0 end) as countOf_1
148
+
149
+ , sum(case tbl1.Number1 when 2 then 1 else 0 end) as countOf_2
150
+
151
+ , sum(case tbl1.Number1 when 3 then 1 else 0 end) as countOf_3
152
+
153
+ , sum(case tbl2.Number2 when 12 then 1 else 0 end) as countOf_4
154
+
155
+ from TABLE1 tbl1 full join TABLE2 tbl2
156
+
157
+ on tbl1.ID = tbl2.ID
158
+
159
+ and tbl1.Number1 in (1,2,3)
160
+
161
+ and tbl2.Number2 = 12
162
+
163
+ group by coalesce(tbl1.ID, tbl2.ID)
164
+
165
+ order by coalesce(tbl1.ID, tbl2.ID);
166
+
167
+ ```