質問編集履歴
3
追記カラム名修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -75,7 +75,7 @@
|
|
75
75
|
, sum(case tbl1.Number1 when 1 then 1 else 0 end) as countOf_1
|
76
76
|
, sum(case tbl1.Number1 when 2 then 1 else 0 end) as countOf_2
|
77
77
|
, sum(case tbl1.Number1 when 3 then 1 else 0 end) as countOf_3
|
78
|
-
, sum(case tbl2.Number2 when 12 then 1 else 0 end) as
|
78
|
+
, sum(case tbl2.Number2 when 12 then 1 else 0 end) as countOf_12
|
79
79
|
from TABLE1 tbl1 full join TABLE2 tbl2
|
80
80
|
on tbl1.ID = tbl2.ID
|
81
81
|
and tbl1.Number1 in (1,2,3)
|
2
例テーブル修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,32 +4,33 @@
|
|
4
4
|
やりたいこと
|
5
5
|
---
|
6
6
|
下記①②のような表があったとき、IDごとに特定のNumberのカウントを取得するビュー③を作成したいです。
|
7
|
-
※①のテーブルではNumber=1
|
7
|
+
※①のテーブルではNumber=1~3, ②のテーブルではNumber=12だけカウント
|
8
8
|
①元テーブル1
|
9
|
-
|ID|
|
9
|
+
|ID|Number1|
|
10
10
|
|:--|:--:|
|
11
11
|
|田中|1|
|
12
12
|
|高橋|2|
|
13
|
+
|高橋|4|
|
13
14
|
|斉藤|1|
|
14
|
-
|斉藤|2|
|
15
|
-
|斉藤|2|
|
16
15
|
|斉藤|3|
|
16
|
+
|斉藤|3|
|
17
|
+
|斉藤|12|
|
17
18
|
|
18
19
|
②元テーブル2
|
19
|
-
|ID|
|
20
|
+
|ID|Number2|
|
20
21
|
|:--|:--:|
|
21
22
|
|田中|3|
|
22
23
|
|林|2|
|
23
|
-
|林|
|
24
|
+
|林|12|
|
24
|
-
|林|
|
25
|
+
|林|12|
|
25
26
|
|
26
27
|
③作成したいビュー
|
27
|
-
|ID|countOf_1|countOf_2|countOf_3|
|
28
|
+
|ID|countOf_1|countOf_2|countOf_3|countOf_12|
|
28
|
-
|:--|--:|--:|--:|
|
29
|
+
|:--|--:|--:|--:|--:|
|
29
|
-
|田中|1|
|
30
|
+
|田中|1|0|0|0|
|
30
|
-
|高橋|
|
31
|
+
|高橋|0|1|0|0|
|
31
|
-
|斉藤|1|2|
|
32
|
+
|斉藤|1|0|2|0|
|
32
|
-
|林|
|
33
|
+
|林|0|0|0|2|
|
33
34
|
|
34
35
|
試したこと
|
35
36
|
---
|
1
提示例誤り
title
CHANGED
File without changes
|
body
CHANGED
@@ -62,4 +62,23 @@
|
|
62
62
|
|
63
63
|
また方法2だと、テーブル1から取得した結果は一つの表にまとめられましたが、テーブル2から取得した結果を結合することができませんでした。
|
64
64
|
|
65
|
-
ご教授のほど、よろしくお願いします。
|
65
|
+
ご教授のほど、よろしくお願いします。
|
66
|
+
追記
|
67
|
+
---
|
68
|
+
正しい例を提示していませんでした。申し訳ございません。
|
69
|
+
元テーブル1と元テーブル2のカラム"Number"は実際には違うカラム名となります。
|
70
|
+
またyambejp様、sazi様のご回答を参考に実行すると結合された表は作成されるのですが、countof_1~4のsum結果が実際と異なってしまいました。
|
71
|
+
コードを記載します(※また実際と異なるといけないため、条件など実際の環境に合わせたコードを載せています)
|
72
|
+
```SQL
|
73
|
+
select coalesce(tbl1.ID, tbl2.ID) as ID
|
74
|
+
, sum(case tbl1.Number1 when 1 then 1 else 0 end) as countOf_1
|
75
|
+
, sum(case tbl1.Number1 when 2 then 1 else 0 end) as countOf_2
|
76
|
+
, sum(case tbl1.Number1 when 3 then 1 else 0 end) as countOf_3
|
77
|
+
, sum(case tbl2.Number2 when 12 then 1 else 0 end) as countOf_4
|
78
|
+
from TABLE1 tbl1 full join TABLE2 tbl2
|
79
|
+
on tbl1.ID = tbl2.ID
|
80
|
+
and tbl1.Number1 in (1,2,3)
|
81
|
+
and tbl2.Number2 = 12
|
82
|
+
group by coalesce(tbl1.ID, tbl2.ID)
|
83
|
+
order by coalesce(tbl1.ID, tbl2.ID);
|
84
|
+
```
|