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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
オラクルではできるのにSQLSERV...
-
ACCESSのSQLで、NULLかNULLでな...
-
sqlserverで集計結果をUPDATEし...
-
accessでのリンクテーブルの更新
-
sqlplusでバックスペースが効か...
-
「マスタ」と「テーブル」の違...
-
Accessにインポートしたら並び...
-
Accessでクエリを完了できませ...
-
ACCESS 一番最新の日付の金額...
-
インデックスの再構築の意味っ...
-
3つ以上のテーブルをUNIONする...
-
データの二重表示の原因
-
symfowareのSQL文in句をバッチ...
-
2つのテーブルから条件に一致...
-
ビューで引数を使いたい
-
SELECT時の行ロックの必要性に...
-
ACCESS2007 フォーム 「バリア...
-
ACCESS【更新クエリの中断がで...
-
あるテーブルのデータを追加、...
-
主キーの変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのSQLで、NULLかNULLでな...
-
sqlserverで集計結果をUPDATEし...
-
オラクルではできるのにSQLSERV...
-
アクセス 日付抽出(年月のみ)...
-
AccessのSQLで、FROM句の構文エ...
-
違いを教えてください
-
更新クエリでキー違反
-
sqlserverで同一キー単位で金額...
-
sqlserverで対象のレコードを削...
-
シャープレジスター エラーコード
-
MAX値を条件にデータを取得する...
-
Access2000へのインポートエラー
-
access前月差分クエリ書き換え...
-
ACCESSで複数テーブルを結合し...
-
AccessテーブルでのF6キーにつ...
-
sqlplusでバックスペースが効か...
-
プライマリーキーで同じ値をUPD...
-
片方のテーブルにないデータを...
-
条件付き合計をSQLで
-
Access2つのテーブルの差額を...
おすすめ情報