SELECT * INTO TABLE1
FROM Table2
UNION ALL
SELECT * FROM Table3;
GO
Run Code Online (Sandbox Code Playgroud)
我正在使用此查询将两个表堆叠到一个表中。这些表的列顺序应该完全相同,这样查询才能成功执行。
我想知道是否有一个技巧我们可以做到,无论列顺序如何,它都可以工作。有没有办法指示 SQL Server 按名称自动排列两个表中的列并执行UNION
?
例如,在 SAS 中,诀窍是编写一个OUTER UNION CORR
查询。
我认为你有两个选择。要么键入查询中的列,要么使用动态 SQL 执行某些操作。
declare @sql nvarchar(max)
declare @col nvarchar(max)
select @col = stuff((select ','+quotename(C.COLUMN_NAME)
from INFORMATION_SCHEMA.COLUMNS as C
where C.TABLE_NAME = 'Table2'
order by C.ORDINAL_POSITION
for xml path(''), type).value('.', 'nvarchar(max)'), 1, 1, '')
set @sql = 'select '+@col+' into Table1 from Table2 union all '+
'select '+@col+' from Table3'
exec (@sql)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9055 次 |
最近记录: |