SQLserverでクロス集計
SQLserver2005以降から対応していたようです。
Table1
会社名 | 月 | 契約数 |
---|---|---|
Docono | 1月 | 150 |
ua | 1月 | 100 |
Shiftbank | 1月 | 50 |
Docono | 2月 | 200 |
ua | 2月 | 130 |
Shiftbank | 2月 | 80 |
Docono | 3月 | 50 |
ua | 3月 | 250 |
Shiftbank | 3月 | 300 |
クロス集計結果
select * from [Table1] pivot ( sum([契約数]) for [月] in ([1月],[2月],[3月]) ) as pivottable order by 1
解説
- 「select *」
- 全カラムを出力する場合。限定する場合は「select [会社名], [1月], [2月]」。
- 「pivot ( sum([契約数])」
- 集計対象カラムと処理方法。平均の場合はavg()、カウントならcount()。
- for [月] in ([1月],[2月],[3月]) )
- 生成するカラム。この例だと、月が増えた場合は追加する必要がある。