动态枢轴where子句

时间:2016-07-10 07:31:40

标签: sql sql-server

我有一个动态数据透视表,如下所示,我需要添加一个where子句

DECLARE @cols AS NVARCHAR(MAX),
@query  AS NVARCHAR(MAX),@uniqId varchar(50);

set @uniqId = 'IN0s3Z0n8z4v'

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.DisplayLabel) 
        FROM [dbo].[CountyCaseUserData] c where UniqueEntryId = @uniqId
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'') 

print @cols
 set @query = 'SELECT ' + @cols + ' 
 from 
        (
            SELECT UserInput, DisplayLabel,row_number() 
                       over (partition by DisplayLabel order by  CCId) AS No
            from [dbo].[CountyCaseUserData] where UniqueEntryId = @uniqId
       ) x
        pivot 
        (
            max(UserInput)
            for DisplayLabel in (' + @cols + ')
        ) p ';


 execute(@query)

但是在执行时,我收到了一条消息

  

必须声明标量变量" @ uniqId"

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

正如其他人指出的那样,

更改execute(@query)

exec sp_executesql @query, N'@uniqId varchar(50)', @uniqId