您可以使用PIVOT执行此 *** 作。在执行PIVOT时,可以使用以下两种方法之一进行 *** 作:使用“静态数据透视表”(将对行进行编码)或“动态数据透视表”将在运行时创建列列表:
静态数据透视表(请参阅带有演示的SQL Fiddle):
SELECt *FROM( select empid, wagepre, amount from t1) xpivot( sum(amount) for wagepre in ([basic], [TA], [DA])) p
动态枢轴:
DECLARE @cols AS NVARCHAr(MAX), @query AS NVARCHAr(MAX);select @cols = STUFF((SELECT distinct ',' + QUOTENAME(wagepre) FROM t1 FOR XML PATH(''), TYPE ).value('.', 'NVARCHAr(MAX)') ,1,1,'')set @query = 'SELECt empid, ' + @cols + ' from ( select empid, wagepre, amount from t1 ) x pivot ( sum(amount) for wagepre in (' + @cols + ') ) p 'execute(@query)
两者都会为您带来相同的结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)