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,可以使用,但查询应该是动态的。

下次请正确格式化示例数据和代码片段。现在我是为你做的,因为你是新来的。请阅读本文: