- 締切済み
SELECT文について
対象のテーブルを以下とした時に、 GROUP「001」と「002」のそれぞれの「値1」「値2」の合計値を表示したいのです。 テーブル名 TBL_1 |グループ1| 値1 | 値2 | | A | 2 | 4 | | A | 3 | 7 | | B | 10 | 5 | | B | 15 | 8 | | C | 20 | 30 | | C | 15 | 25 | 取得したい結果は以下です。 | グループ_A合計値1 | グループ_A合計値2 | グループ_B合計値1 | グループ_B合計値2 | | 5 | 11 | 25 | 13 | 色々と試したのですが、ハマってしまいました。 SQLを教えて頂けないでしょうか。お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- CHRONOS_0
- ベストアンサー率54% (457/838)
データベースの名前とバージョンは? なぜ普通の集計じゃ駄目なの? Accessなら グループ_A合計値1: Sum(IIf([グループ1]="A",[値1],0)) 以下同様です
tab1: ID__グループ1__値1__値2 01__A____________2____4 02__A____________3____7 03__B___________10____5 04__B___________15____8 05__C___________20___30 06__C___________15___25 |グループ_A合計値1|グループ_A合計値2|グループ_B合計値1|グループ_B合計値2| | 5| 11| 25| 13| まず、このようなテーブルからSQL文にて上述の集計を行おうとするのが無謀というものです。 SELECT DBSum("値1","tab1","グループ1='A'") AS グループ_A合計値1, DBSum("値2","tab1","グループ1='A'") AS グループ_A合計値2, DBSum("値1","tab1","グループ1='B'") AS グループ_B合計値1, DBSum("値2","tab1","グループ1='B'") AS グループ_B合計値2, DBSum("値1","tab1","グループ1='C'") AS グループ_C合計値1, DBSum("値2","tab1","グループ1='C'") AS グループ_C合計値2 FROM tab1; 確かに、このような類の SELECT文を書けば目的は達成するでしょう。 が、このような SELECT文を使ってエクセル風に集計結果を表示する意義はないと思います。
お礼
お礼が遅れました。 ありがとうございました。
- tsuka2tsuka
- ベストアンサー率57% (55/95)
>色々と試したのですが、ハマってしまいました。 試してみて、ハマったSQLはどのようなSQLですか? どう考えて、どのようなSQLを書いたがうまくいかなかった、と書かれていた方が、把握しやすいです。
お礼
すみません、あまり時間がなくて補足できませんでした。 次回より質問するときの参考にさせて頂きます。 ありがとうございました。
お礼
ありがとうございました。 まさにその通りでした。 SqlServer等では、 SUM(CASE WHEN グループ1 = 'A' THEN 値1 ELSE 0 END) AS グループ_A合計値1 と記述するのですね。 勉強になりました。有難うございました。