Псевдо слишком загадочно (уменьшено?) Очень маловероятно, чтобы в каждом перекрестном объединении 2 таблиц было 2 столбца в каждом из компонентов объединения
INSERT INTO T1(A,B)
(SELECT * FROM E,R)
UNION
(SELECT * FROM Z,X)
Примечание: Если у вас есть ЛЮБОЙ порядок по выражениюв общем случае должно находиться в конце объединения
INSERT T1(A,B)
SELECT P,Q FROM E,R
UNION
SELECT R,S FROM Z,X
@ обновлено на основе текста ошибки "Сервер: Msg 104, Уровень 15, Состояние 1, Строка 1Элементы ORDER BY должны отображаться в списке выбора, если в операторе содержится оператор UNION "
Это происходит, когда у вас есть объединение, которое пытается выполнить ORDER BY для столбца, который не отображается в результате.Рассмотрим обычный ORDER BY, включающий невыбранные столбцы
select top 10 name from syscolumns order by xtype
Строки согласованы, и запрос может быть выполнен.Однако, если вы сделали
select top 10 name from syscolumns where xtype > 50
union all
select top 10 name from syscolumns where xtype < 50
order by xtype
ДАЖЕ ЕСЛИ xtype существует в обеих частях UNION, но время, когда он представлен ORDER BY (который работает в конце на всем наборе результатов), столбецне там.Вам придется переписать его (если вы не хотите показывать xtype
) как
select name from (
select top 10 name, xtype from syscolumns where xtype > 50
union all
select top 10 name, xtype from syscolumns where xtype < 50
) x
order by xtype
Надеюсь, что поможет