Sql server 2008 透视动态查询并将结果存储到表
我有一个列数不同的动态查询。我想将结果存储到一个表中以便进一步处理 我添加了一个insert into子句来将结果存储到一个表中,但是我得到了一个语法错误Sql server 2008 透视动态查询并将结果存储到表,sql-server-2008,dynamic,pivot,Sql Server 2008,Dynamic,Pivot,我有一个列数不同的动态查询。我想将结果存储到一个表中以便进一步处理 我添加了一个insert into子句来将结果存储到一个表中,但是我得到了一个语法错误 Msg 102, Level 15, State 1, Line 14 Incorrect syntax near ')' 我正在使用MS SQL server management studio 2008 R2 我的问题是: IF OBJECT_ID('TEMPDB..#datesTemp') IS NOT NULL BEGIN D
Msg 102, Level 15, State 1, Line 14 Incorrect syntax near ')'
我正在使用MS SQL server management studio 2008 R2
我的问题是:
IF OBJECT_ID('TEMPDB..#datesTemp') IS NOT NULL BEGIN DROP TABLE #datesTemp END
DECLARE @cols AS NVARCHAR(MAX),
@colNames AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX),
@startDate datetime
SET @startDate = '2005-01-01'
;with dates as
(
select @startdate datelist, 1 sp
union all
select dateadd(month, 1, datelist), sp+1
from dates
where sp+1 <= 122 -- change this number 5 to the number of months you need
)
select sp,
CONVERT(VARCHAR(7), datelist, 120) as MONTHANDYEAR
into #datesTemp
from dates
option (maxrecursion 122)
select @cols = STUFF((SELECT ',' + QUOTENAME(monthandyear)
from #datesTemp
group by monthandyear, sp
order by sp
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
select @colNames = STUFF((SELECT ', isnull(' + QUOTENAME(monthandyear)+', 0) as '+QUOTENAME(monthandyear)
from #datesTemp
group by monthandyear, sp
order by sp
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'select * into recmonth_temp from
(SELECT FIPS, DATA_TYPE,' + @colNames + '
from
(
select FIPS, DATA_TYPE,REC_MONTH, TOTAL_RECORDS
from REPORTING.DBO.APEX_CUMULATIVE_SUMMARY_ALL_STAGING_NEW A join member1.dbo.fipscode F
on a.fips = f.fipscode
) x
pivot
(
sum(TOTAL_RECORDS)
for REC_MONTH in (' + @cols + ')
) p) '
execute(@query)
您收到的语法错误是什么?哦,对不起…语法错误-Msg 102,级别15,状态1,第14行附近的语法不正确。您在最后一个错误之后缺少别名。你需要给所有的子查询和派生表都加上别名。我自己经过几次尝试后就知道了。非常感谢你的帮助。非常感谢。