ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3873938 特定条件の下でグループ化
質問者:kenntoto お世話になります。
SQL文でご質問があります。

たとえば以下のようなデータがあったとします。

項目1, 項目2, 項目3, 項目4
--------------------------------
1  ,  A  ,  0  ,  10
2  ,  A  ,  0  ,  20
3  ,  B  ,  1  ,  30
4  ,  B  ,  0  ,  40
5  ,  C  ,  0  ,  50
6  ,  C  ,  0  ,  60
7  ,  D  ,  1  ,  70
8  ,  D  ,  1  ,  80
9  ,  E  ,  0  ,  90
10  ,  E  ,  1  ,  100

ここから[項目3] = 1 のレコードが含まれているもの
に限り[項目2]でグループ化し、
[項目4]の合計値を求めて

項目2   ,   項目4
---------------
B  ,  70
D  ,  150
E  ,  190

と取得したいのですが、1回のSQL文で取得できるのでしょうか?
ご存知のかたがいらっしゃいましたら、どうかご教授ください。m(__)m
困り度:
  • すぐに回答を!
質問投稿日時:
08/03/18 17:31
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.1 > ここから[項目3] = 1 のレコードが含まれているもの
> に限り[項目2]でグループ化し、
のところが、やや意味があいまいな気がしますが、こういうことをやりたい
のでしょうか。
SELECT T3.項目2 , SUM(T3.項目4)
FROM ( SELECT T1.項目2,T1.項目4
FROM TBL T1
WHERE EXISTS
( SELECT 1 FROM TBL T2
WHERE T1.項目2 = T2.項目2
AND T2.項目3 = '1' ) ) T3
GROUP BY T3.項目2
回答者:nora1962
種類:回答
どんな人:一般人
自信:参考意見
回答日時:
08/03/18 18:57
この回答へのお礼nora1962さん、早い回答ありがとうございます。
教えていただいたSQLで問題なく取得することができました。
このような方法があったんですね!勉強になりました。
回答のSQLを参考にいろいろ調べてみたところ
SELECT T1.項目2,SUM(T1.項目4)
FROM TBL T1
WHERE EXISTS
( SELECT 1 FROM TBL T2
WHERE T1.項目2 = T2.項目2
AND T2.項目3 = '1' )
GROUP BY T1.項目2
としても取得できました。
もともとSQLを2回に分けて発行するつもりだったので
大変助かりました!