SQL 行专列

SQL 行转列 , 初始数据 :

 

SQL 语句 :

SELECT Year,
MAX(CASE month WHEN '1' THEN amount END) m1,
MAX(CASE month WHEN '2' THEN amount END) m2,
MAX(CASE month WHEN '3' THEN amount END) m3,
MAX(CASE month WHEN '4' THEN amount END) m4
FROM Amounts
GROUP BY Year

 

 

SQL 2005新特性 PIVOT :

SELECT * FROM Amounts PIVOT (MAX(amount) FOR month IN ([1],[2],[3],[4])) as T  --这里必须给 PIVOT 后面生成的子表命名

 

PIVOT 步骤 :

1  根据未在 PIVOT 后面出现的列分组

2  根据 FOR 列名 IN  后面出现的值 创建新的列明

3  执行聚合函数 , 并把聚合计算的值 赋值给对应的列下

posted on 2012-02-21 17:22  多个马甲  阅读(208)  评论(0编辑  收藏  举报