我有一个旋转股票价格表的查询,但它使用临时表。
我想知道如何将这个旋转的表存储在表中。 我一直在努力将此查询用于'创建表格'因为有一些变量声明。
以下是代码:
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
有人可以帮忙吗?
答案 0 :(得分:0)
而不是这一行:
SELECT * INTO #TEMP
只需将#TEMP
替换为您要创建的永久表的名称。
同时取下CTE名称的#
标志:
WITH
TEMP AS(
...
FROM TEMP
#
符号用于命名临时表,不应在其他对象名中使用。