SQL Server动态PIVOT行转列如何添加party作为结果首列
SQL行转列添加分类首列解决方案
你只需要调整动态SQL的查询字段列表,将party字段加在最前面即可,修改后的完整代码如下:
DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) select @cols = STUFF((SELECT distinct ',' + QUOTENAME(dateasint) from #t group by dateasint FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') -- 仅修改此处SELECT部分,新增party作为首列 set @query = N'SELECT party, ' + @cols + N' from ( select party, total, dateasint from #t ) x pivot ( max(total) for dateasint in (' + @cols + N') ) p ' exec sp_executesql @query;
调整说明
- 原代码动态拼接的SELECT语句只包含了日期列,缺少
party字段。PIVOT运算的行分组依据就是子查询中除聚合字段、透视图列之外的字段,也就是这里的party,只需显式声明将其放在查询结果第一列即可。 - 调整后运行结果第一列为所有party分类,后续列对应各
dateasint取值,单元格为对应日期下的total数值,完全符合需求。
内容的提问来源于stack exchange,提问作者Barrassment
相关产品推荐
相关产品推荐

