ID1 Name ID2 Single
----------------------------------------------------
1 ABC 1 100
2 DEF 1 200
表2
ID1 Name ID2 Monthly
----------------------------------------------------
3 PQR 2 500
4 LMN 2 600
我想要输出
ID1 Name ID2 Single Monthly
--------------------------------------------------------
1 ABC 1 100 NULL
2 DEF 1 200 NULL
3 PQR 2 NULL 500
4 LMN 2 NULL 600
我使用所有加入没有任何工作 提前谢谢
答案 0 :(得分:2)
JOIN不适用于这种情况,您需要在此使用UNION:
SELECT ID1, NAME, ID2, Single, NULL FROM Table1
UNION ALL
SELECT ID1, NAME, ID2, NULL, Monthly FROM Table2
答案 1 :(得分:2)
为了以防万一,出于某种疯狂的原因,你真的需要它作为JOIN
而不是(正如其他人指出的那样)UNION ALL
:
create table #T1 (ID1 int,Name varchar(10),ID2 int,Single int)
insert into #T1 (ID1 , Name , ID2 , Single)
select 1 ,'ABC', 1 , 100 union all
select 2 ,'DEF', 1 , 200
create table #T2 (ID1 int,Name varchar(10),ID2 int,Monthly int)
insert into #T2 (ID1 , Name , ID2 , Monthly)
select 3 ,'PQR', 2 , 500 union all
select 4 ,'LMN', 2 , 600
select COALESCE(t1.ID1,t2.ID1) as ID1,COALESCE(t1.Name,t2.Name) as Name,
COALESCE(t1.ID2,T2.ID2) as ID2,t1.Single,t2.Monthly
from #T1 t1 full outer join #T2 t2 on 1=0
提供您要求的结果
答案 2 :(得分:1)
您不需要JOINS
,需要UNION (ALL)。
UNION(Transact-SQL)
将两个或多个查询的结果合并到一个结果集中 包括属于union中所有查询的所有行。 UNION操作与使用组合列的连接不同 来自两张桌子。
SQL声明
SELECT ID1, Name, ID2, Single, NULL as Monthly
FROM Table1
UNION ALL
SELECT ID1, Name, ID2, Null, Monthly
FROM Table2
答案 3 :(得分:0)
尝试使用UNION
SELECT * FROM Single
UNION
SELECT * FROM Monthly
希望这有帮助。
答案 4 :(得分:0)
请使用以下查询...
选择 ID1, 名称, ID2, 单, NULL AS'每月“
表1中的
联盟
选择 ID1, 名称, ID2, NULL AS'Single', 每月
来自表2