SQL Server DB に次のテーブルがあるとします。
Date Col_A Col_B Col_C ...
Day1 1 2 3 ....
Day1 2 3 4 ....
Day1 3 4 5 ....
Day2 1 2 3 ....
Day2 2 3 4 ....
Day2 5 6 7 ....
Day2 6 7 8 ....
そして、次のように見えるものを取得するためにCol_A
、に基づいてそれ自体に対してテーブルの完全な外部結合を実行したいと考えてCol_B
います。Col_C
Date Col_A Col_B Col_C ... Date Col_A Col_B Col_C ....
Day1 1 2 3 .... Day2 1 2 3 ....
Day1 2 3 4 .... Day2 2 3 4 ....
Day1 3 4 5 .... NULL NULL NULL NULL ..NULL..
NULL NULL NULL NULL ..NULL.. Day2 5 6 7 ....
NULL NULL NULL NULL ..NULL.. Day2 6 7 8 ....
私はこのSQLがそれを行うと考えました:
SELECT * FROM
(Select * from MyTable where Date = 'Day1') T1
FULL OUTER JOIN
(Select * from MyTable where Date = 'Day2') T2
ON
T1.Col_A = T2.Col_A
AND
T1.Col_B = T2.Col_B
AND
T1.Col_C = T2.Col_C
NULLS
ただし、これは完全な結合ではなく、T1 がいっぱいで T2 が を持つ行のみを返します。
私は何を間違っていますか、どうすればこれを修正できますか?? また、テーブルをそれ自体に結合して日付パラメーターを変更するよりも、この種のレコード セットを取得するためのより良い方法はありますか??
ありがとう!!!