从两个不同的表加入两个不同的列和合并重复
问题描述:
我有两个临时表 表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
1 ABC 2 700
2 DEF 2 800
欲输出
ID1 Name ID2 Single Monthly
--------------------------------------------------------
1 ABC 1 100 700
2 DEF 1 200 800
3 PQR 2 NULL 500
4 LMN 2 NULL 600
我用all Joins,Union ALL,Union nothing提前
答
希望你正在使用Sql Server 2008(其他智能插入语句在我的查询将无法正常工作)。试试这个。 从所需的输出,我想你需要从table2中的所有值和相应的单(表1中的列名称)值。
DECLARE @tempTable1 TABLE (ID1 INT,Name VARCHAR(10),ID2 INT,Single INT)
DECLARE @tempTable2 TABLE (ID1 INT,Name VARCHAR(10),ID2 INT,Monthly INT)
INSERT INTO @tempTable1 VALUES
(1 ,'ABC' ,1 ,100),
(2 ,'DEF' ,1 ,200)
INSERT INTO @tempTable2 VALUES
(3 ,'PQR' ,2 ,500 ),
(4 ,'LMN' ,2 ,600 ),
(1 ,'ABC' ,2 ,700 ),
(2 ,'DEF' ,2 ,800);
SELECT
T2.ID1
,T2.Name
,T2.ID2
,T1.Single
,T2.Monthly
FROM @tempTable2 T2
LEFT OUTER JOIN @tempTable1 T1
ON T2.ID1 = T1.ID1
ORDER BY T2.ID1
答
工作 感谢试试这个:
select coalesce(T1.ID1, T2.ID1) as ID1,
coalesce(T1.Name, T2.Name) as ID1,
coalesce(T1.ID2, T2.ID2) as ID2,
T1.Single,
T2.Monthly
from Table1 as T1
full outer join Table2 as T2
on T1.ID1 = T2.ID1
http://data.stackexchange.com/stackoverflow/q/121659/
如果你知道所有的行始终将存在于表2可以用的,而不是right outer join
full join
。
+0
我试图正确方法.....我会尽快回复 – 2011-12-14 11:21:13
我需要从表2(表1中的名称)对应的值单中的所有值和那里,反之亦然 – 2011-12-14 11:55:48