Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server关于将2个表与union联接的查询_Sql Server - Fatal编程技术网

Sql server SQL Server关于将2个表与union联接的查询

Sql server SQL Server关于将2个表与union联接的查询,sql-server,Sql Server,我有两个表T1和T2,它们都包含一列ID和value 我需要通过ID将T1和T2加入T3 T3应包含ID、T1Value和T2Value列 主要要求是,T1和T2的ID可能未映射 T1: ID VALUE ----------- 1 hi 2 hello ID VALUE ---------- 2 kitty 3 dog T2: ID VALUE ----------- 1 hi 2 hello ID VALUE ---------- 2

我有两个表
T1
T2
,它们都包含一列
ID
value

我需要通过
ID
T1
T2
加入
T3

T3
应包含
ID
T1Value
T2Value

主要要求是,
T1
T2
ID
可能未映射

T1

ID   VALUE
-----------
1    hi
2    hello
ID   VALUE
----------
2    kitty
3    dog
T2

ID   VALUE
-----------
1    hi
2    hello
ID   VALUE
----------
2    kitty
3    dog
然后,
T3
应该是

ID   T1VALUE   T2VALUE
----------------------
 1   hi
 2   hello     kitty
 3             dog
不使用透视表或临时表(理想情况下应该是单个可执行查询)是否可以实现这一点


谢谢。

您可以使用
完全外部联接

SELECT ID      = COALESCE(T1.ID, T2.ID),
       T1VALUE = T1.VALUE,
       T2VALUE = T2.VALUE
FROM   T1
       FULL OUTER JOIN T2
       ON  T1.ID = T2.ID
关于
完全外部联接
有很多例子。只要搜索一下就可以了

另一种方法是使用
UNION ALL

SELECT T1.ID, T1VALUE = T1.VALUE, T2VALUE = NULL
FROM   T1

UNION ALL

SELECT T2.ID, T1VALUE = NULL,     T2VALUE = T2.VALUE
FROM   T2