2011-12-22 8 views
1

これは本当に簡単な解決策であり、脳の凍結に苦しんでいると感じています。2つのクエリの結果を結合して、結合された列にいずれかのテーブルのデータが欠落する可能性があります

レイアウトは同じですが、別々のシステムのデータを持つ2つのテーブルがあり、それらを組み合わせてレポートを作成します。しかし、私が通常参加するコラムには、どちらか一方のテーブルにしか値がない場合があります。

Date | Sales ------------------- 20/12/2010 | 200 18/12/2010 | 70 

が、私はこれらの結果になるように設定したい

Date  | Sales 
------------------- 
20/12/2010 | 500 
19/12/2010 | 450 

表B:

結果

Date  | Sales A | Sales B 
------------------------------- 
20/12/2010 | 500  | 200 
19/12/2010 | 450  | NULL 
18/12/2010 | NULL | 70 

このシンプルで明白な外観ですが、私はそれを正しく得ることができず、助けていただければ幸いです。

答えて

5

Using Outer Joins in SQL Server:完全外部を用い

は完全外部ジョインを使用、結合の結果に一致しない行を含めることによって、不一致情報を保持する
を結合。 Microsoft®SQL Server™2000は、完全外部結合演算子FULL OUTER JOINを提供します。これには、他のテーブルに一致する値があるかどうかにかかわらず、両方のテーブルのすべての行が含まれます。

select 
    coalesce(TableA.Date, TableB.Date) as Date, 
    TableA.Sales as SalesA, 
    TableB.Sales as SalesB 
from 
    TableA 
    full join TableB on TableA.Date = TableB.Date 
+0

ありがとうございました!私に多くの時間を救った! – Martyn

0

あなたは、両方のテーブルからクエリに一致するようにfull outer joinを使用することができます。

select IsNull(A.Date, B.Date) as Date 
,  A.Sales as [Sales A] 
,  A.Sales as [Sales B] 
from A 
full outer join B 
on  A.Date = B.Date 

興味深い読み取り:Coding Horror post on SQL join typesその後isnullは、左側または右側から日付を選択することができます。

関連する問題