質問 |
||
| 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回に分けて発行するつもりだったので 大変助かりました! |