sqlserver快速实现行转列之pivot
的有关信息介绍如下:在sqlserver中我们除了case when 来进行行转列还可以用PIVOT函数进行行转列
PIVOT 的定义格式
PIVOT(<聚合函数>([聚合列值]) FOR [行转列前的列名] IN([行转列后的列名1],[行转列后的列名2],[行转列后的列名3],.......[行转列后的列名N]))
生成基本数据表
向表中插入数据
查询表中的全部数据
现在我们是用PIVOT函数将列[WEEK]的行值转换为列,并使用聚合函数Sum(Price)来统计每一个Week列在转换前有多少行数据,语句如下所示
查询结果如下图所示
需要注意的是PIVOT函数的查询结果中多了一列GroupId,这是因为PIVOT函数只用到了[Shopping]表中的列[Week]和[Price],[Shopping]表中还有一列[GroupId],PIVOT函数没有用到,所以PIVOT函数默认将[Shopping]表中没有用到的列当做了Group By来处理