使用透视创建表



我有一个旋转股票价格表的查询,但它使用临时表。

我想知道如何将这个旋转的表存储在表中。 我一直在努力将此查询与"创建表"一起使用,因为有一些变量声明。

这是代码:

IF OBJECT_ID('TEMPDB..#TEMP','U') IS NOT NULL DROP TABLE #TEMP;
DECLARE @COL NVARCHAR(MAX);
DECLARE @SQL NVARCHAR(MAX);
DECLARE @HEADER NVARCHAR(MAX);
DECLARE @FIX NVARCHAR(MAX);
DECLARE @VAR NVARCHAR(MAX);
DECLARE @ORDER NVARCHAR(MAX);
WITH
#TEMP AS(
select Cast(MarketDate as Date) as date_, oo.seccode, ConstFlag  
FROM 
(select distinct seccode, InfoCode, MarketDate, Constflag
from ds_russell1000_prices_adj_r) oo
SELECT * INTO #TEMP
FROM #TEMP
SET @FIX = 'Date_';
SET @VAR = 'Constflag'
SET @HEADER = 'seccode';
SELECT @COL = COALESCE(@COL + ',','') + QUOTENAME(seccode) FROM #TEMP F
GROUP BY QUOTENAME(seccode)
ORDER BY QUOTENAME(seccode)
SET @ORDER = 'Date_'
SET @SQL = 'SELECT  ' + @FIX + ',' + @COL + ' FROM (SELECT ' + @FIX + ',' +
VAR + ', ' + @HEADER + ' FROM #TEMP) P
PIVOT (sum(' + @VAR + ') FOR ' + @HEADER + ' in (' + @COL + ')) PVT
ORDER BY ' + @ORDER + ''
EXEC sp_executesql @SQL;
IF OBJECT_ID('ds_russell1000_positions_ROTATED') IS NOT NULL DROP TABLE
ds_russell1000_positions_ROTATED;
select * into ds_russell1000_positions_ROTATED
from #TEMP

有人可以帮忙吗?

而不是这一行:

SELECT * INTO #TEMP

只需将#TEMP替换为要创建的永久表的名称即可。

同时#签署您的 CTE 名称:

WITH
TEMP AS(
...
FROM TEMP

#符号用于命名临时表,不应在其他对象名称中使用。

最新更新