使用数据透视运算符时,我可以在 IN 子句中传递变量吗

Can I pass Variables inside IN Clause when using pivot operator

我可以在使用 pivot 时在 IN 子句中传递变量吗?我的意思是我该怎么做:

pivot(Sum(Column1) for [Column2] in ([@variable1] , [@variable2] , [@variable3]) ) as pvt

您可以使用动态 SQL:

DECLARE @sql nvarchar(max), @cols nvarchar(max) = '[Column1], [Column2]'

SELECT @sql = 'SELECT *
FROM SomeTable
pivot (
Sum(Column1) for [Column2] in ('+@cols+')
) AS PVT'

EXEC(@sql)