【发布时间】:2015-11-12 22:28:08
【问题描述】:
我最近从这里学习了如何在 SQL 中进行 PIVOT,实际上我从这里的另一个问题中举了一个例子。效果很好。
但是,我想在查询之后执行额外的连接,但我无法将查询结果插入临时表?我该怎么做?
创建表
CREATE TABLE yt
([Store] int, [Week] int, [xCount] int)
;
INSERT INTO yt
([Store], [Week], [xCount])
VALUES
(102, 1, 96),
(101, 1, 138),
(105, 1, 37),
(109, 1, 59),
(101, 2, 282),
(102, 2, 212),
(105, 2, 78),
(109, 2, 97),
(105, 3, 60),
(102, 3, 123),
(101, 3, 220),
(109, 3, 87);
执行旋转查询
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(Week)
from yt
group by Week
order by Week
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT store,' + @cols + ' from
(
select store, week, xCount
from yt
) x
pivot
(
sum(xCount)
for week in (' + @cols + ')
) p '
execute(@query)
结果是
store 1 2 3
101 138 282 220
102 96 212 123
105 37 78 60
109 59 97 87
但我想将它放在#temp 表中,我尝试将 INTO #temp 放在“执行查询”之前和查询中的 FROM 语句之前。
有什么想法吗?我知道 SELECT * INTO #temp FROM BlaBla 但似乎与查询不同。
【问题讨论】:
-
动态sql中可以使用全局临时表
标签: sql sql-server pivot