質問編集履歴
3
追記カラム名修正
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_
|
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
例テーブル修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,11 +10,11 @@
|
|
10
10
|
|
11
11
|
下記①②のような表があったとき、IDごとに特定のNumberのカウントを取得するビュー③を作成したいです。
|
12
12
|
|
13
|
-
※①のテーブルではNumber=1
|
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
|
-
|斉藤|
|
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
|
-
|林|
|
47
|
+
|林|12|
|
46
48
|
|
47
|
-
|林|
|
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|
|
59
|
+
|田中|1|0|0|0|
|
58
60
|
|
59
|
-
|高橋|
|
61
|
+
|高橋|0|1|0|0|
|
60
62
|
|
61
|
-
|斉藤|1|2|
|
63
|
+
|斉藤|1|0|2|0|
|
62
64
|
|
63
|
-
|林|
|
65
|
+
|林|0|0|0|2|
|
64
66
|
|
65
67
|
|
66
68
|
|
1
提示例誤り
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
|
+
```
|