Соедините два разных столбца из двух разных таблиц - 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

Я хочу вывод

 ID1         Name        ID2            Single   Monthly
--------------------------------------------------------
 1            ABC         1            100        NULL
 2            DEF         1            200        NULL
 3            PQR         2            NULL       500
 4            LMN         2            NULL       600

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

Ответы [ 5 ]

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

На всякий случай, по какой-то безумной причине, вам действительно нужно это как JOIN, а не (как отмечали другие) как UNION ALL:

create table #T1 (ID1 int,Name varchar(10),ID2 int,Single int)
insert into #T1 (ID1 ,        Name  ,      ID2    ,        Single)
select 1            ,'ABC',         1  ,          100 union all
select 2            ,'DEF',         1   ,         200

create table #T2 (ID1 int,Name varchar(10),ID2 int,Monthly int)
insert into #T2 (ID1 ,        Name  ,      ID2    ,        Monthly)
select 3            ,'PQR',         2   ,         500 union all
select 4            ,'LMN',         2   ,         600

select COALESCE(t1.ID1,t2.ID1) as ID1,COALESCE(t1.Name,t2.Name) as Name,
COALESCE(t1.ID2,T2.ID2) as ID2,t1.Single,t2.Monthly
from #T1 t1 full outer join #T2 t2 on 1=0

Дает результат, который вы просили

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

JOIN не будет работать в этом случае, вам нужно использовать UNION здесь:

SELECT ID1, NAME, ID2, Single, NULL FROM Table1
UNION ALL
SELECT ID1, NAME, ID2, NULL, Monthly FROM Table2
1 голос
/ 14 декабря 2011

Вам не нужно JOINS, вам нужен UNION (ALL) .

UNION (Transact-SQL)

Объединяет результаты двух или более запросов в один набор результатов, который включает все строки, принадлежащие всем запросам в объединении.Операция UNION отличается от использования объединений, которые объединяют столбцы из двух таблиц.

Оператор SQL

SELECT ID1, Name, ID2, Single, NULL as Monthly
FROM   Table1
UNION ALL
SELECT ID1, Name, ID2, Null, Monthly
FROM   Table2
0 голосов
/ 14 декабря 2011

Пожалуйста, используйте следующий запрос ...

Выберите ID1, Название, ID2, Не замужем, NULL AS 'Monthly "

из Таблицы1

Union

Выберите ID1, Название, ID2, NULL AS 'Single', Ежемесячно

из таблицы2

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

попробуйте использовать UNION

SELECT * FROM Single
UNION
SELECT * FROM Monthly

Надеюсь, это поможет.

...