Я пытаюсь создать новую таблицу из результатов динамического поворота ниже. Сам запрос работает нормально.Как создать фиксированную таблицу из динамического стержня в 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 Новая_таблица FROM (подзапрос) Но это не сработало. Я получаю ошибки «Msg 156, уровень 15, состояние 1, строка 416 Неверный синтаксис рядом с ключевым словом« DECLARE ». Msg 102, уровень 15, состояние 1, строка 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;
Но, я получаю эту ошибку:
Msg 194, уровень 15, состояние 1, строка 419 оператор SELECT INTO оператор не может содержать ЗЕЬЕСТ, который присваивает значения переменной.
Я потратил немало времени, пытаясь понять это, посмотрев предыдущие вопросы и был бы признателен за любую помощь. Спасибо.