У меня есть хранимая процедура, которая в настоящее время использует один 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 *
. Я мог указать столбцы, зная, что они представляют собой в общей таблице, но я теряю это преимущество (которое в данном конкретном случае является чрезвычайно полезным преимуществом). Есть ли способ выполнить то, что я пытаюсь сделать, зная, что они оба выбирают из одной и той же таблицы и что столбцы всегда будут совпадать?