Здесь происходит пара вещей, которые представляют или будут для вас проблемой.
SQL Сервер SELECT...INTO
logi c - это то, как Microsoft решила реализовать более стандартный CREATE TABLE AS...
синтаксис (за которым в большинстве диалектов следует оператор SELECT
). Вы можете создать эту таблицу только один раз, и тогда она появится.
Локальные временные таблицы (с одним #
) продолжают существовать, пока ваш сеанс не отключится от экземпляра. Поэтому, если вы попытаетесь запустить приведенный выше код дважды, не отключаясь, он потерпит неудачу.
Вы используете SELECT *
, который вас укусит, когда кто-то изменит схему одной исходной таблицы.
С учетом всего сказанного, вам не нужны все эти c логики. Вы можете делать все, что хотите, одним запросом.
SELECT
<Column List>
INTO #my_temp_table
FROM
source_A
WHERE @flag = 0
UNION
SELECT
<Column List>
FROM
source_B
WHERE @flag <> 0;