2016-04-29 2 views
0

В SQL Server можно ли в одном запросе, независимо от того, насколько сложным, объединить две таблицы следующим образом?Комбинация таблиц SQL Server в одном запросе

Использование «полного соединения» Мне нужно будет выбрать имя из обеих таблиц, в результате чего будут дублироваться столбцы, а с помощью «объединения всех» я получу дубликаты строк.

Таблица 1:

+---------+--------+ 
| name | value1 | 
+---------+--------+ 
| Abel | a  | 
| Baker | b  | 
+---------+--------+ 

Таблица 2:

+---------+--------+ 
| name | value2 | 
+---------+--------+ 
| Baker | x  | 
| Charlie | y  | 
+---------+--------+ 

выход запроса:

+---------+--------+--------+ 
| name | value1 | value2 | 
+---------+--------+--------+ 
| Abel | a  | NULL | 
| Baker | b  | x  | 
| Charlie | NULL | y  | 
+---------+--------+--------+ 

ответ

1

Использование FULL OUTER JOIN вы можете достичь ваши ожидания.

CREATE TABLE #table1 (name varchar (200), value1 VARCHAR(200)) 
INSERT INTO #table1 
SELECT 'Abel', 'a' UNION 
SELECT 'Baker', 'b' 
GO 

CREATE TABLE #table2 (name varchar (200), value2 VARCHAR(200)) 
INSERT INTO #table2 
SELECT 'Baker', 'x' UNION 
SELECT 'Charlie', 'y' 
GO 

SELECT ISNULL(t1.name, t2.name) AS name, t1.value1, t2.value2 
FROM #table1 t1 
FULL OUTER JOIN #table2 t2 ON t2.name = t1.name 

DROP TABLE #table1 
DROP TABLE #table2 
+0

@TonyHendrix Не могли бы вы подтвердить, что это работает или нет, тогда только мы можем добавить/изменить правильный ответ. – Arulkumar

+0

Спасибо! В своем разочаровании я плыл прямо перед решением SELECT ISNULL(). –

Смежные вопросы