0

Я не могу использовать сводные данные таблицы.Pivot с переменной таблицы

Его следующая ошибка даяние на время выполнения: «Необходимо объявить скалярную переменную @reportData»

Я попытался, как указано ниже

DECLARE @reportData TABLE 
(
PERSONID NUMERIC(6,0), 
personname VARCHAR(100), 
bu VARCHAR(50), 
timeperiod VARCHAR(100), 
wfstatus VARCHAR(100) 
) 

Я использую ниже динамического поворота запроса

declare @query nvarchar(max) 
set @query=N'SELECT PERSONID,PERSONNAME,BU,wfstatus,'[email protected]+' 
from(
SELECT PERSONID,PERSONNAME,BU,wfstatus,timeperiod 
FROM 
'[email protected]+') AS SOURCETABLE 
PIVOT 
(group by wfstatus 
FOR timeperiod 
IN('[email protected]+') 
) as pivorttable 
select personid,personname,bu,timeperiod,status from pivorttable' 

execute(@query); 

Может ли кто-нибудь помочь мне в этом? Мне нужно использовать только переменную таблицы, чтобы поддерживать проблему параллелизма.!

+0

Почему вы отметили это тремя различными версиями SQL Server? Если 2008+, вы можете передать параметр таблицы readonly table в динамический SQL. Однако вместо этого используйте локальную таблицу '# temp'. Это сеанс, поэтому не должно вызывать проблем с параллелизмом. –

ответ

1

FROM'[email protected] пытается добавить переменную таблицы в строку, которая не работает как переменная таблицы, не является строкой.

Учитывая, что Вы, вероятно, нужно заполнить reportData первый вы могли бы перейти к явно созданной временной таблицы

create table #reportData 
(
PERSONID NUMERIC(6,0) 
... 
) 

Или используйте тип таблицы;

--run once 
CREATE TYPE ReportDataType AS TABLE (
    PERSONID NUMERIC(6,0), 
    personname VARCHAR(100) 
) 


declare @reportData ReportDataType 
insert @reportData values 
    (111, 'bob'), 
    (222, 'alice') 

declare @query nvarchar(max) = N'select * from @T' 

exec sp_executesql @query, N'@T ReportDataType readonly', @reportData 
Смежные вопросы