2012-05-01 3 views
2

У меня есть временная таблица в моей процедуре; Я попытался вставить данные из оператора выбора, как это:Вставить временную таблицу с несколькими операциями выбора

INSERT INTO #temptable 
SELECT fee, expense, total FROM invoice 
UNION 
SELECT vat, holdingtax, total FROM uplifts 

... но в моем TempTable, только первый оператор выбора получает заполняется в таблицу, а следующий оператор выбора не вставляет данные ,

+1

попробуйте запустить только 'select's (с' union') и посмотреть, какие данные вы получаете – GolfWolf

ответ

2

Я предполагаю, что UNION удаляет дублированные данные. я только что сделал тест с UNION ALL:

insert into #temptable 

select top 1 name from sys.tables 
union all 
select top 1 name from sys.tables a 

и я получил (2 row(s) affected)

попытаться заменить UNION на UNION ALL

2

Синтаксис выглядит нормально,

Ее возможно, что имеет место дублирование в 2 таблицы.

Вы можете проверить это, используя Union All, а не Union.

Я бы просто выполнил запрос без вставки, чтобы увидеть, вернете ли вы ожидаемые результаты.

Смежные вопросы