0

我无法使用透视表变量的数据。

它在运行时给出以下错误:“必须声明标量变量@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);

有人可以帮我吗?我只需要使用表变量来维护并发问题。!

4

1 回答 1

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
于 2013-05-15T12:14:13.210 回答