0

次のようなスキーマのテーブルがあります

id | year | month | amount ...
x  | 2011 | 12    | 312
x  | 2011 | 12    | 213
x  | 2012 | 1     | 123
x  | 2012 | 1     | 123
x  | 2012 | 2     | 123
...

(mysql経由で)次のような出力が可能かどうか知りたい

year | 1   | 2   | 3 | ....
2011 | 321 | 231 | ...
2012 | 246 | 123 | ...

したがって、を実行しgroup by year, monthsum(amount)個々の月を列として、1年に1つの「行」を出力します。

ありがとう

4

1 に答える 1

2

ある種のピボットテーブルを使用することをお勧めします。数か月しか扱っていない場合は、以下のSQLのようなものが役に立ちます。私は最初の3か月だけをしましたが、残りは同じです。

SELECT year, SUM(IF(month=1,amount,0)) As '1', SUM(IF(month=2,amount,0)) As '2', SUM(IF(month=3,amount,0)) As '3' FROM mytable GROUP BY year
于 2012-09-12T15:23:52.187 に答える