
SQL初心者です。
ちょっとSQLの作り方で詰まったしまったので、アドバイスいただければと考えています。
月 名前 金額
2 Aさん 15000
12 Bさん 20000
1 Aさん 80000
2 Eさん 14000
・ ・ ・
・ ・ ・
のようなテーブルから、月ごとに、誰がいくら使ったかを表示するクエリを作りたいのです。
各フィールドに月、各レコードに人を配置したいと思っています。
一応考えたSQLが↓
SELECT DSUM([月],"テーブル名",月 = 1) AS 1月, DSUM([月],"テーブル名",月 = ) AS 2月, ・・・ AS 12月
FROM テーブル名
GROUP BY 名前
なのですが、かなり的外れかもしれません・・。
二つ(月と名前)の要素でグループ化するってのが難しいです。
アドバイスいただければと思います。
No.4ベストアンサー
- 回答日時:
No.5
- 回答日時:
select
名前,
sum(case when 月=1 then 金額 else 0 end) as 1月,
sum(case when 月=2 then 金額 else 0 end) as 2月,
sum(case when 月=3 then 金額 else 0 end) as 3月,
sum(case when 月=4 then 金額 else 0 end) as 4月,
sum(case when 月=5 then 金額 else 0 end) as 5月,
sum(case when 月=6 then 金額 else 0 end) as 6月,
sum(case when 月=7 then 金額 else 0 end) as 7月,
sum(case when 月=8 then 金額 else 0 end) as 8月,
sum(case when 月=9 then 金額 else 0 end) as 9月,
sum(case when 月=10 then 金額 else 0 end) as 10月,
sum(case when 月=11 then 金額 else 0 end) as 11月,
sum(case when 月=12 then 金額 else 0 end) as 12月
from テーブル名
group by 名前
No.3
- 回答日時:
SUM01は、SUM(DECODE(月,'1',金額,0)) の別名です。
月フィールドが'1'だったら、金額フィールドを、それ以外だったら、0をSUMし、SUM01として出力しなさい
というコマンドで、1~12の12か月分 つまりSUM01 から SUM12
までのフィールドを出力します。
No.2
- 回答日時:
訂正します。
SELECT
名前
,SUM(DECODE(月,'1',金額,0)) SUM01
,SUM(DECODE(月,'2',金額,0)) SUM02
,SUM(DECODE(月,'3',金額,0)) SUM03
,SUM(DECODE(月,'4',金額,0)) SUM04
,SUM(DECODE(月,'5',金額,0)) SUM05
,SUM(DECODE(月,'6',金額,0)) SUM06
,SUM(DECODE(月,'7',金額,0)) SUM07
,SUM(DECODE(月,'8',金額,0)) SUM08
,SUM(DECODE(月,'9',金額,0)) SUM09
,SUM(DECODE(月,'10',金額,0)) SUM10
,SUM(DECODE(月,'11',金額,0)) SUM11
,SUM(DECODE(月,'12',金額,0)) SUM12
FROM (SELECT 名前 ,月,SUM(金額) 金額
FROM TEST_TABLE
WHERE 月 BETWEEN '1' AND '12'
GROUP BY 名前
,月) TBL1
GROUP BY 名前
訂正、ご丁寧にありがとうございます。
DECODE関数はオラクルでしか使えないんですね・・。
あと、SUM(DECODE(月,'1',金額,0)) SUM01
の最後のSUM01の意味がよく分からないのですが、本当ご迷惑ですが、よろしければ解説お願いできますでしょうか。
構造自体はおそらく同じだと思うので、じっくり解読してみたいと思います!
No.1
- 回答日時:
Oracleで、同様?なSQLを作成していましたので、参考になれば幸いです。
SELECT
名前
,SUM(DECODE(月,'1',金額,0)) SUM01
,SUM(DECODE(月,'2',金額,0)) SUM02
,SUM(DECODE(月,'3',金額,0)) SUM03
,SUM(DECODE(月,'4',金額,0)) SUM04
,SUM(DECODE(月,'5',金額,0)) SUM05
,SUM(DECODE(月,'6',金額,0)) SUM06
,SUM(DECODE(月,'7',金額,0)) SUM07
,SUM(DECODE(月,'8',金額,0)) SUM08
,SUM(DECODE(月,'9',金額,0)) SUM09
,SUM(DECODE(月,'10',金額,0)) SUM10
,SUM(DECODE(月,'11',金額,0)) SUM11
,SUM(DECODE(月,'12',金額,0)) SUM12
FROM (SELECT 名前 ,月,SUM(金額) 金額
FROM TEST_TABLE
WHERE 月 BETWEEN '2007/04' AND '2008/03'
GROUP BY 名前
,月) TBL1
GROUP BY 名前
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのSQLで、NULLかNULLでな...
-
sqlserverで集計結果をUPDATEし...
-
オラクルではできるのにSQLSERV...
-
Access2000へのインポートエラー
-
違いを教えてください
-
sqlserverで対象のレコードを削...
-
更新クエリでキー違反
-
accessでのリンクテーブルの更新
-
片方のテーブルにないデータを...
-
MAX値を条件にデータを取得する...
-
SQL - 3つのキーに含まれないも...
-
シャープレジスター エラーコード
-
ACCESSで複数テーブルを結合し...
-
access前月差分クエリ書き換え...
-
Access 2010動きが遅い
-
AccessのSQLで、FROM句の構文エ...
-
「マスタ」と「テーブル」の違...
-
Access VBA [リモートサーバー...
-
テーブルのレコード削除ができ...
-
Accessにインポートしたら並び...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのSQLで、NULLかNULLでな...
-
sqlserverで集計結果をUPDATEし...
-
オラクルではできるのにSQLSERV...
-
MAX値を条件にデータを取得する...
-
アクセス 日付抽出(年月のみ)...
-
sqlserverで同一キー単位で金額...
-
更新クエリでキー違反
-
ACCESSで複数テーブルを結合し...
-
シャープレジスター エラーコード
-
sqlserverで対象のレコードを削...
-
AccessのSQLで、FROM句の構文エ...
-
違いを教えてください
-
SQL - 3つのキーに含まれないも...
-
sqlserverでUPDATEできません
-
sqlplusでバックスペースが効か...
-
access前月差分クエリ書き換え...
-
accessでのリンクテーブルの更新
-
片方のテーブルにないデータを...
-
Access 2010動きが遅い
-
集計処理について
おすすめ情報