これ何て呼びますか

SQLで条件によって加算するか、しないかを判定したいと思っています。

■テーブル:test
name,flag,number
mike,4,1
mike,4,2
mike,5,3
mike,6,4
mike,7,5
mike,8,6
mike,9,7

■書いたSQL
SELECT
test.name AS "name",
(CASE WHEN flag = '4' THEN sum(number) ELSE NULL END) AS "4",
(CASE WHEN flag = '5' THEN sum(number) ELSE NULL END) AS "5",
(CASE WHEN flag = '6' THEN sum(number) ELSE NULL END) AS "6",
(CASE WHEN flag = '7' THEN sum(number) ELSE NULL END) AS "7",
(CASE WHEN flag = '8' THEN sum(number) ELSE NULL END) AS "8",
(CASE WHEN flag = '9' THEN sum(number) ELSE NULL END) AS "9"
FROM test
GROUP BY
test.name

■結果
4,5,6,7,8,9
null,null,null,null,null,28

欲しい結果は、フラグが4ののものの合計。flagが「4」の場合は、「3」という結果が返ってきてもらいたいです。
flagが5の場合は、3が返ってきてもらいたいです。

SQLが間違っているのですが、どこが間違っているのかわかりません。どのように修正すればよろしいでしょうか?よろしくお願いします。

環境はSQLiteを使用しています。

A 回答 (2件)

SQLはこの手の処理は縦方向(?)に出力します



select flag,sum(number) as sumNumber from test group by flag;

しかし面倒ですが横方向に出せないこともありません
select
sum(number*(flag=4)) as sum4
,sum(number*(flag=5)) as sum5
,sum(number*(flag=6)) as sum6
,sum(number*(flag=7)) as sum7
,sum(number*(flag=8)) as sum8
,sum(number*(flag=9)) as sum9
from test
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。参考になりました。感謝です。

お礼日時:2014/06/22 09:18

SQLの使い方が根本的に間違えているような…。


とりあえず正しいと思われるものを書いておくので、見比べてみてください。

SELECT
name, flag, SUM(number) AS number
FROM test
GROUP BY name, flag;
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。参考になりました。感謝です。

お礼日時:2014/06/22 09:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す