您的位置首页生活百科

sqlserver快速实现行转列之pivot

sqlserver快速实现行转列之pivot

的有关信息介绍如下:

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来处理