2016-04-29 15 views
0

SQL Serverでは、どのように複雑に関係なく、単一のクエリで2つのテーブルを以下のように組み合わせることは可能ですか?1つのクエリでSQL Serverのテーブルの組み合わせ

「フル・ジョイン」を使用すると、両方の表から.nameを選択して重複列を作成し、「すべて共用」を使用して重複行を取得する必要があります。

表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()ソリューションの直後に航海しました。 –

関連する問題