2011-12-14 100 views
0

我有两个临时表 表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提前

回答

0

希望你正在使用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 
+0

我需要从表2(表1中的名称)对应的值单中的所有值和那里,反之亦然 – 2011-12-14 11:55:48

1

工作 感谢试试这个:

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 joinfull join

+0

我试图正确方法.....我会尽快回复 – 2011-12-14 11:21:13

相关问题