2011-12-14 2 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, союз ничего работая заранее спасибо

ответ

0

Надеюсь, что вы используете Sql Server 2008 (иначе мудрый оператор insert в моем запросе не будет работать). Попробуй это. Из обязательного ввода, я думаю, вам нужны все значения из таблицы2 и соответствующее значение Single (Column name in table 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

мне нужно все значения table2 и там соответствующие Single (имя столбца в таблице 1) значение и наоборот –

+0

В этом случае использование полное внешнее соединение вместо левого внешнего соединения. –

+0

Спасибо Renjith Kumar –

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/

Если вы знаете, что все строки всегда будет присутствовать в Table2 вы можете использовать right outer join вместо full join.

+0

Правильный путь я пытаюсь ..... я отвечу скоро –