- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:group by で重複行を、縦横に展開したい)
group by で重複行を、縦横に展開する方法について
このQ&Aのポイント
- テーブル名「masta」には「hinmei」、「tani」、「hiduke」、「ryou」というフィールドがあります。このテーブルのデータを横に展開したい場合、SQLの「GROUP BY」句を使用して集計することができます。
- 具体的には、「Hinmei」、「Tani」、「Hiduke」を「GROUP BY」し、集計関数「SUM」を使用して「ryou」を合計します。このようにして集計したデータをテーブルの横方向に展開することができます。
- 以下のSQLを使用すると、指定した期間(200801から200812)のデータを「Hinmei」と「Tani」でグループ化し、「Hiduke」ごとに「ryou」を合計することができます。そして、合計したデータをテーブルの横方向に展開して表示することができます。 SELECT Hinmei, Tani, SUM(ryou) as ryou FROM masuta WHERE hiduke BETWEEN '200801' AND '200812' GROUP BY Hinmei, Tani
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
例えば、こんな感じ。 SELECT Hinmei, Tani, SUBSTR(hiduke,1,4) as Nen, SUM(CASE SUBSTR(hiduke,5,2) WHEN '01' THEN ryou ELSE 0 END) as "1月", SUM(CASE SUBSTR(hiduke,5,2) WHEN '02' THEN ryou ELSE 0 END) as "2月", SUM(CASE SUBSTR(hiduke,5,2) WHEN '03' THEN ryou ELSE 0 END) as "3月", SUM(CASE SUBSTR(hiduke,5,2) WHEN '04' THEN ryou ELSE 0 END) as "4月", SUM(CASE SUBSTR(hiduke,5,2) WHEN '10' THEN ryou ELSE 0 END) as "10月", SUM(CASE SUBSTR(hiduke,5,2) WHEN '11' THEN ryou ELSE 0 END) as "11月", SUM(CASE SUBSTR(hiduke,5,2) WHEN '12' THEN ryou ELSE 0 END) as "12月" FROM masta WHERE hiduke BETWEEN '200801' AND '200812' GROUP BY Hinmei,Tani,Nen
お礼
すばらしいです。 こんなに早く回答をもらえるとは思いませんでした。 ここに、書き込みするのも初めてなんです。 実際にSQLを打ち込んで、見事表ができました。 ありがとうございました。