问题描述
我使用以下 SQL 脚本来执行动态数据透视。我想使用结果在另一个表上进行左连接,但“INTO”方法似乎不适用于表变量@query。它显示一个错误:
必须声明表变量“@query”
如果我像这样直接加入表:LEFT JOIN @query。 我应该如何保存@query 以便在另一个表上保持连接?谢谢!
create table temp
(
date datetime,category varchar(3),amount money
)
insert into temp values ('1/1/2012','ABC',1000.00)
insert into temp values ('2/1/2012','DEF',500.00)
insert into temp values ('2/1/2012','GHI',800.00)
insert into temp values ('2/10/2012',700.00)
insert into temp values ('3/1/2012',1100.00)
DECLARE @cols AS NVARCHAR(MAX),@query AS NVARCHAR(MAX);
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.category)
FROM temp c
FOR XML PATH(''),TYPE
).value('.','NVARCHAR(MAX)'),1,'')
set @query = 'SELECT date,' + @cols + ' from
(
select date,amount,category
from temp
) x
pivot
(
max(amount)
for category in (' + @cols + ')
) p '
execute(@query)
drop table temp
解决方法
我想通了。解决方法是在字符串sql脚本中添加##result如下:
set @query = 'SELECT date,' + @cols + ' ##result from
(
select date,amount,category
from temp
) x
pivot
(
max(amount)
for category in (' + @cols + ')
) p '
select * from ##result