您需要使用動態SQL這個
DECLARE @pet VARCHAR(max)
SET @pet = (SELECT ',' + Quotename(petsName) -- Quotename is used to escape illegal characters
FROM pets
FOR xml path('')); -- to concatenate the records
SET @pet = Stuff(@pet, 1, 1, '') -- to remove the leading comma
DECLARE @sql NVARCHAR(8000) = ''
SET @sql = '
select * from pets AS basedata
Pivot (count(PetID)
for petsName in (' + @pet + ')) as pivottable'
exec sp_executesql @sql -- to execute the dynamically framed string
在查詢另一個錯誤是,你想分配給petsName
變量@pet
。
SET @pet = (select petsName from pets);
但是一個變量只能存儲一條記錄。所以你需要將記錄連接成用逗號分隔的單個記錄。然後該變量可以用於數據透視表
SET @pet = (SELECT ',' + Quotename(petsName)
FROM pets
FOR xml path(''));
您的寵物表的結構是什麼?目前還不清楚你想用你的數據透視查詢來達到什麼目的。 –