0

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 が を持つ行のみを返します。

私は何を間違っていますか、どうすればこれを修正できますか?? また、テーブルをそれ自体に結合して日付パラメーターを変更するよりも、この種のレコード セットを取得するためのより良い方法はありますか??

ありがとう!!!

4

1 に答える 1