基本语法 数据源 PIVOT( 列(匹配列的数据值 转换后为一行) FOR 列(需要放到行标题的那一列,转换后为固定标题值) IN (列名称) ) e.g 有数据: UserNameSubjectScore 张三 语文80 张三 数学90 张三 英语70 张三 生物85 李四 语文80 李四 数学92 李四 英语76 李四 生物88 sql语句: SELECT * FROM Table PIVOT ( sum(Score) FOR subject IN ([语文],[数学],[英语],[生物]) ) AS T 结果: UserName 语文 数学 英语 生物 李四 80 92 76 88 张三 80 90 70 85 -------------------------------------------------- 但在大多数情况下,我们的数据源很有可能是表连接的结果,只需要做个简单转换即可 SELECT * FROM ( SELECT * FROM Table left join .... ) P PIVOT ( sum(Score) FOR subject IN ([语文],[数学],[英语],[生物]) ) AS T |
|
来自: johnny_net > 《sql server》