前提・実現したいこと
SQL初心者です。
以下のテーブルからピボットテーブルのような集計を行いたいのですが、私の知識では実現できず、ご教示をお願いしたく質問させていただきます。
テーブル:取引一覧
日付 | 業者 | 数量 | 国 | 地域 |
---|---|---|---|---|
2018-01-14 | A業者 | 1 | 中国 | 1 |
2018-01-28 | A業者 | 2 | 日本 | 0 |
2018-01-22 | B業者 | 1 | アメリカ | 1 |
2018-01-08 | C業者 | 4 | スイス | 1 |
2018-01-17 | C業者 | 1 | 日本 | 0 |
2018-02-01 | A業者 | 2 | オーストラリア | 1 |
2018-02-10 | B業者 | 1 | 日本 | 0 |
2018-02-21 | B業者 | 1 | タイ | 1 |
2018-02-03 | C業者 | 2 | 中国 | 1 |
2018-02-25 | C業者 | 1 | 日本 | 0 |
実際はもっとカラムが多いですが割愛
最終的に欲しいデータ
国別月別で数量の合計を出したい。
国 | 業者 | 2018-01(の数量) | 2018-02(の数量) |
---|---|---|---|
アメリカ | B業者 | 1 | 0 |
オーストラリア | A業者 | 0 | 2 |
タイ | B業者 | 0 | 1 |
中国 | A業者 | 1 | 0 |
中国 | C業者 | 0 | 1 |
日本 | A業者 | 2 | 0 |
日本 | B業者 | 0 | 1 |
日本 | C業者 | 1 | 1 |
試したこと
以下のクエリで集計に必要なデータを抽出するところまではできたのですが、ここからどのように持っていったら良いのかがわかりません。
もしSQL文だけでは実現が難しいようであれば、PHPは少しわかりますので、PHP側でデータ操作が発生しても構いませんので、アドバイスをいただけますと幸いです。
宜しくお願いいたします。
SQL
1SELECT DATE_FORMAT(日付,'%Y-%m') AS 月, 業者, SUM(数量), 国 FROM 取引一覧 GROUP BY 国, 月;
結果
月 | 業者 | 数量 | 国 |
---|---|---|---|
2018-01 | B業者 | 1 | アメリカ |
2018-01 | A業者 | 1 | 中国 |
2018-01 | A業者 | 2 | 日本 |
2018-01 | C業者 | 1 | 日本 |
2018-02 | A業者 | 2 | オーストラリア |
2018-02 | B業者 | 1 | タイ |
2018-02 | C業者 | 1 | 中国 |
2018-02 | B業者 | 1 | 日本 |
2018-02 | C業者 | 1 | 日本 |
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/19 00:30 編集
2019/02/19 00:36
2019/02/19 01:12