我无法使用数据透视表变量的数据。
它在运行时给出以下错误: “必须声明标量变量@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,'+@datelist+'
from(
SELECT PERSONID,PERSONNAME,BU,wfstatus,timeperiod
FROM
'+@reportData+') AS SOURCETABLE
PIVOT
(group by wfstatus
FOR timeperiod
IN('+@datelist+')
) as pivorttable
select personid,personname,bu,timeperiod,status from pivorttable'
execute(@query);
有人可以帮助我吗? 我只需要使用表变量来维护并发问题。!
答案 0 :(得分:1)
FROM'+@reportData
尝试将表变量添加到字符串中,该字符串不能用作表变量。
鉴于您可能首先需要填充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