Sql server 2008 使用Pivot将行转换为列
我的表格数据:Sql server 2008 使用Pivot将行转换为列,sql-server-2008,Sql Server 2008,我的表格数据: Empcode Empname COmpany Department Question Scale 1001 ABC Comp1 IT Development Opportunities 50 1001 ABC Comp1 IT Goals and Targets Set 30 1001 ABC Comp1 IT
Empcode Empname COmpany Department Question Scale
1001 ABC Comp1 IT Development Opportunities 50
1001 ABC Comp1 IT Goals and Targets Set 30
1001 ABC Comp1 IT Feedback and Coaching 10
1002 XYZ Comp1 IT Goals and Targets Set 60
1002 XYZ Comp1 IT Feedback and Coaching 70
查询我尝试了什么:
DECLARE @cols AS NVARCHAR(MAX)
DECLARE @query AS NVARCHAR(MAX)
SELECT @cols = STUFF((SELECT distinct ',' + QUOTENAME(Question)
from TmpTest1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT Empcode,Empname,Company,Department,' + @cols + '
from
(
select *
from TmpTest1
) x
pivot
(
max(scale)
for Question in (' + @cols + ')
) p '
execute(@query)
它正在工作,但我不想使用execute(@query)
。
我想要一个单一的内联查询。您应该使用
PIVOT
,只使用精确的结果字段列表。(据我所知,PIVOT
没有动态版本)
如果有动态字段列表,则必须使用动态查询
如果不想使用EXEC,可以使用,但查询应该是动态的。下次请正确格式化示例数据和代码片段。现在我是为你做的,因为你是新来的。请阅读本文: