У меня есть хранимая процедура, которая в настоящее время использует один CTE. Этот работает так:
WITH MY_CTE AS
(
// Logic here uses SELECT * from a single table.
)
SELECT *
INTO #Tasks
FROM MY_CTE;
Теперь у меня есть требование дополнительно вызвать другой CTE, который добавит больше данных в исходную временную таблицу. Я надеялся сделать что-то вроде этого:
IF @Option = 1
BEGIN
INSERT INTO #Tasks
(
WITH MY_OTHER_CTE
(
// Logic here uses SELECT * from same table as first CTE.
)
SELECT *
FROM MY_OTHER_CTE
)
END
Проблема в том, что для вызова INSERT INTO #Tasks
необходимо указать VALUES
столбцы. Обе CTE возвращают записи из одной таблицы. Хорошим преимуществом оригинальной хранимой процедуры было то, что она работала бы, даже если столбцы в этой таблице изменились, поскольку я использовал SELECT *
. Я мог бы указать столбцы, зная, что они находятся в общей таблице, но я потерял это преимущество (что в данном конкретном случае является чрезвычайно полезным преимуществом). Есть ли способ выполнить то, что я пытаюсь сделать, зная, что они оба выбирают из одной таблицы и что столбцы всегда будут совпадать?