Соедините два разных столбца из двух разных таблиц и объедините дубликаты - PullRequest
0 голосов
/ 14 декабря 2011

у меня есть две временные таблицы Таблица 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

Я использовал все Joins, Union ALL, Union ничего не работает заранее спасибо

Ответы [ 2 ]

1 голос
/ 14 декабря 2011

Попробуйте:

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 голосов
/ 14 декабря 2011

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