我需要知道,如果没有聚合函数要使用,MS SQL中的“数据透视”是否可以用于将行转换为列。我看到了很多仅带有聚合函数的示例。我的字段是字符串数据类型,我需要将此行数据转换为列数据。这就是为什么我写这个问题。我只是用’case’做到了。谁能帮我......提前感谢。
您可以使用PIVOT执行此操作。在执行PIVOT时,可以使用以下两种方法之一进行操作:使用“静态数据透视表”(将对行进行编码)或“动态数据透视表”将在运行时创建列列表:
静态数据透视表(请参阅带有演示的SQL Fiddle):
SELECT * FROM ( select empid, wagecode, amount from t1 ) x pivot ( sum(amount) for wagecode in ([basic], [TA], [DA]) ) p
动态枢轴:
DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX); select @cols = STUFF((SELECT distinct ',' + QUOTENAME(wagecode) FROM t1 FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') set @query = 'SELECT empid, ' + @cols + ' from ( select empid, wagecode, amount from t1 ) x pivot ( sum(amount) for wagecode in (' + @cols + ') ) p ' execute(@query)
两者都会为您带来相同的结果