2011-12-14 99 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

相關問題