この人頭いいなと思ったエピソード

初心者です。 どなたかご教授いただけると助かります。
=====

=table1=
usercd point class
1 100 5
2 200 5
1 500 5
3 150 11

=table2=
usercd point class
1 150 11
2 700 5
3 200 11

のように、データが2つのテーブルに分かれています。

table1とtable2をUNIONして、usercd ごとの各class の point 合計を表示させたいと思います。

=結果(として期待しているもの)=
usercd class5合計 class11合計
1 600 150
2 900 0
3 0 350

==========

UNION して 片方(例:class5) の合計を集計することは出来ました。

=出来たsql=
SELECT "usercd",Sum("point") FROM
(SELECT * FROM "table1" UNION ALL SELECT * FROM "table2") AS "sumpoint5"
WHERE "class" = '5'
GROUP BY "usercd";

しかし、それぞれの合計を一度に集計する方法がわかりません。

どうぞよろしくお願いいたします。

A 回答 (1件)

既に解決したと思いますが...




SELECT usercd,
Sum(CASE class WHEN 5 THEN point ELSE 0 END) AS class5,
Sum(CASE class WHEN 11 THEN point ELSE 0 END) AS class11
FROM
(SELECT * FROM table1 UNION ALL SELECT * FROM table2) as T1
GROUP BY usercd
ORDER BY usercd;

これでどうでしょうか?
試してみたところご希望の結果が返ってきました。
    • good
    • 0
この回答へのお礼

解決していませんでした。 うまくいかずに、途方にくれておりました。

希望の結果が返ってきました。 スバラシイです。 

本当にありがとうございました。 深謝。。。

お礼日時:2006/03/15 13:58

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

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


おすすめ情報