我想从下面的动态透视的结果创建一个新表。查询本身工作正常。如何从SQL中的动态数据透视表创建固定的表格?
DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX);
SET @columns = N'';
SELECT @columns += N', p.' + QUOTENAME(COMMON_NAME)
FROM (SELECT p.COMMON_NAME FROM eBird AS p
GROUP BY p.COMMON_NAME) AS x;
SET @sql = N'
SELECT SAMP_EVENT_ID, ' + STUFF(@columns, 1, 2, '') + '
FROM
(SELECT SAMP_EVENT_ID, COMMON_NAME, SUM(IIF(OBS_COUNT IS NULL, 0, 1)) AS
Pres
FROM eBird GROUP BY SAMP_EVENT_ID, COMMON_NAME) AS j
PIVOT
(SUM(Pres) FOR COMMON_NAME IN ('
+ STUFF(REPLACE(@columns, ', p.[', ',['), 1, 1, '') + ')) AS p;';
PRINT @sql;
EXEC sp_executesql @sql;
我已经试过了典型
SELECT * INTO newtable的FROM(子查询) 但没有奏效。我收到错误“Msg 156,Level 15,State 1,Line 416 关键字'DECLARE'附近语法不正确。Msg 102,Level 15,State 1,Line 432''''附近的语法不正确。
我也尝试修改此部分,如下所示: SELECT @columns + = N',p。' + QUOTENAME(COMMON_NAME) INTO sp_pivot FROM(SELECT p.COMMON_NAME FROM eBird AS p GROUP BY p.COMMON_NAME)AS x;
但是,我得到这个错误:
消息194,级别15,状态1,行419 SELECT INTO语句不能包含赋值给变量的SELECT语句。
我花了相当多的时间试图通过查看以前的问题来解决这个问题,并希望得到任何帮助。谢谢。