有没有办法在T-SQL中隐式地组合一个或多个表?我来自SAS背景,如果想要堆叠多个具有不同列数和名称的表,SAS足够聪明地知道col x不在表y中,因此它将清空所有这些值。T-Sql隐式组合多个表中的一个?
例如,从SAS文件(见实施例1):
data concatenation;
set animal plant;
run;
随着T-SQL所有我有: SAS Example
OBS Common Animal Number OBS Common Plant Number
1 a Ant 5 1 g Grape 69
2 b Bird 2 h Hazelnut 55
3 c Cat 17 3 i Indigo .
4 d Dog 9 4 j Jicama 14
5 e Eagle 5 k Kale 5
6 f Frog 76 6 l Lentil 77
为这两个表是作为简单结合能够发现到目前为止将这两个组合在一起,是明确列出并清空select语句中的所有值。
像这样,例如(一):
select obs, common, animal, null as plant, number
from animal
union all
select obs, common, null as animan, plant, number
现在,如果植物和动物的表有相同的列名会很容易为例(B):
select * from plants
union all
select * from animals
现在,我的问题是,是否有办法将不匹配的表与T-SQL相结合,就像SAS示例一样容易,或者我将不得不明确定义示例(a)中的任何不匹配。
这是没有那么多的列名 - 但UNION你必须有相同的列数和列必须是相同的数据类型作为第一选择相应的列。 – scsimon
很确定你在例子a中有你的答案,我不认为在sql中有一个等价物。 – Simon