私は以下の2つのテーブルT1とT2を持っています。SQL Serverで2つのテーブルをマージする方法はありますか。
表T1
Id Value1
1 2
2 1
3 2
表T2
Id Value2
1 3
2 1
4 1
私は、事前に以下の
Id Value1 Value2
1 2 3
2 1 1
3 2 0
4 0 1
感謝を返すために、SQL Serverクエリを必要とします!
私は以下の2つのテーブルT1とT2を持っています。SQL Serverで2つのテーブルをマージする方法はありますか。
表T1
Id Value1
1 2
2 1
3 2
表T2
Id Value2
1 3
2 1
4 1
私は、事前に以下の
Id Value1 Value2
1 2 3
2 1 1
3 2 0
4 0 1
感謝を返すために、SQL Serverクエリを必要とします!
あなたは、与えられたサンプルデータとISNULL
実行してを登録しようFULL OUTERすることによって、これを達成することができます:
DECLARE @Table1 TABLE (Id INT, Value1 INT)
INSERT INTO @Table1 VALUES (1, 2), (2, 1), (3, 2)
DECLARE @Table2 TABLE (Id INT, Value2 INT)
INSERT INTO @Table2 VALUES (1, 3), (2, 1), (4, 1)
SELECT ISNULL(T1.Id, T2.Id) AS Id,
ISNULL(T1.Value1, 0) AS Value1,
ISNULL(T2.Value2, 0) AS Value2
FROM @Table1 T1
FULL OUTER JOIN @Table2 T2 ON T2.Id = T1.Id
結果:
Id Value1 Value2
1 2 3
2 1 1
3 2 0
4 0 1
FYI-Merge
は、SQL Serverで何か異なることを意味します。
すべての可能なId値のリストを含む表がある場合は、その中からすべてを選択し、T1とT2に2つの左外部結合が残っていることをお勧めします。
提供されているものだけで、完全な外部結合が必要なように思えます。
このような何か作業をする必要があります:
だSELECT Id = COALESCE(T1.Id, T2.Id),
Value1 = COALESCE(T1.Value1, 0),
Value2 = COALESCE(T2.Value2, 0)
FROM T1
FULL OUTER JOIN T2
ON T1.ID = T2.ID
FULL OUTER JOIN
基本的な:これは、一緒に両方のテーブルを結合し、一致するものがない場合でも、両方のテーブルからレコードを保持します
SELECT coalesce(t1.id,t2.id) as [ID],
coalesce(t1.value1,0) as Value1,
coalesce(t2.value2,0) as Value2
FROM t1
FULL OUTER JOIN t2
ON(t1.id = t2.id)
。
フル・ジョインのために、null値を置き換えるのにCOALESCE()
が使用されます。
これを試してみてください。 SQL Server 2012でうまく動作します。
--Create two temp tables
CREATE TABLE #temp1
(Id int,Value1 int)
CREATE TABLE #temp2
(Id int,Value2 int)
--Insert Values to two tables
INSERT INTO #temp1
(Id,Value1)
VALUES
(1,2),(2,1),(3,3)
INSERT INTO #temp2
(Id,Value2)
VALUES
(1,3),(2,1),(4,1)
--Query which gives desired output
SELECT
ID = COALESCE(#temp1.Id, #temp2.Id),
Value1 = COALESCE(#temp1.Value1, 0),
Value2 = COALESCE(#temp2.Value2, 0)
FROM
#temp1 FULL JOIN #temp2 ON #temp1.Id = #temp2.Id
完全結合の一般的な構文は次のとおりです。
SELECT column-names
FROM Table1 FULL OUTER JOIN Table2
ON column-name1 = column-name2
WHERE condition
[SQL JOINとJOINを異なる種類(http://stackoverflow.com/questions/17946221/sql-join-and-different-types-of-joins)の可能性の重複 –