从两个不同的表
加入两个不同的列我有两个临时表 表1从两个不同的表
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
我使用的所有加盟什么工作 提前致谢
JOIN不会为这种情况下,您需要在这里使用UNION:
SELECT ID1, NAME, ID2, Single, NULL FROM Table1
UNION ALL
SELECT ID1, NAME, ID2, NULL, Monthly FROM Table2
你不需要JOINS
,你需要一个UNION (ALL)。
UNION(的Transact-SQL)
将两个或更多个查询的结果到一个结果集 ,其包括属于在工会所有查询的所有行。 UNION操作与使用来自两个表的列 的连接不同。
SQL语句
SELECT ID1, Name, ID2, Single, NULL as Monthly
FROM Table1
UNION ALL
SELECT ID1, Name, ID2, Null, Monthly
FROM Table2
尝试使用UNION
SELECT * FROM Single
UNION
SELECT * FROM Monthly
希望提供s帮助。
这与所需的输出不匹配,因为它只包含Single列,并且会在该列中包含每月值(并且可能会消除两个表之间的值,因为您已经使用了`UNION`而不是`UNION ALL`) – 2011-12-14 09:40:09
请使用以下查询......
选择 ID1, 名称, ID2, 单, NULL作为“每月”
从表1
联盟
选择 ID1, 名称, ID2, NULL作为“单”, 每月
从表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
提供您要求的结果
+1这样滥用SQL。 – 2011-12-14 13:23:14
请在写问题时查看预览。对这个问题的初始格式化非常难以挑选出单独的部分,并且表格格式不正确(他们仍然没有,但我会尽快尝试另一种编辑方式)。 – 2011-12-14 09:38:03