次のようなユニオン クエリを作成できます。
SELECT Table2.Key1、Table2.Key2、Table2.Key3、CASE WHEN Table1.Value1 <> Table2.Value1 THEN 'Value1' END AS DifferingFields
FROM Table2 LEFT JOIN Table1 ON Table2.Key1 = Table1.Key1 AND Table2.Key2 = Table1.Key2 AND Table2.Key3 = Table1.Key3
WHERE テーブル 1.値 1 <> テーブル 2.値 1
ユニオンオール
SELECT Table2.Key1, Table2.Key2, Table2.Key3, CASE WHEN Table1.Value2 <> Table2.Value2 THEN 'Value2' END
FROM Table2 LEFT JOIN Table1 ON Table2.Key1 = Table1.Key1 AND Table2.Key2 = Table1.Key2 AND Table2.Key3 = Table1.Key3
WHERE テーブル 1.値 2 <> テーブル 2.値 2
ユニオンオール
SELECT Table2.Key1, Table2.Key2, Table2.Key3, CASE WHEN Table1.Value3 <> Table2.Value3 THEN 'Value3' END
FROM Table2 LEFT JOIN Table1 ON Table2.Key1 = Table1.Key1 AND Table2.Key2 = Table1.Key2 AND Table2.Key3 = Table1.Key3
WHERE テーブル 1.値 3 <> テーブル 2.値 3
[...残りの値フィールドのステートメントを追加します...]
これは、異なる値を含むフィールドの名前で、3 つのキー フィールドの値を返します。
Microsoft Access の場合は、次を使用します。
SELECT Table2.Key1, Table2.Key2, Table2.Key3, IIF(Table1.Value1 <> Table2.Value1,"Value1","") AS DifferingFields
FROM Table2 LEFT JOIN Table1 ON Table2.Key1 = Table1.Key1 AND Table2.Key2 = Table1.Key2 AND Table2.Key3 = Table1.Key3
WHERE テーブル 1.値 1 <> テーブル 2.値 1
ユニオンオール
SELECT Table2.Key1, Table2.Key2, Table2.Key3, IIF(Table1.Value2 <> Table2.Value2, "Value2","")
FROM Table2 LEFT JOIN Table1 ON Table2.Key1 = Table1.Key1 AND Table2.Key2 = Table1.Key2 AND Table2.Key3 = Table1.Key3
WHERE テーブル 1.値 2 <> テーブル 2.値 2
ユニオンオール
SELECT Table2.Key1, Table2.Key2, Table2.Key3, IIF(Table1.Value3 <> Table2.Value3, "Value3","")
FROM Table2 LEFT JOIN Table1 ON Table2.Key1 = Table1.Key1 AND Table2.Key2 = Table1.Key2 AND Table2.Key3 = Table1.Key3
WHERE テーブル 1.値 3 <> テーブル 2.値 3
次のデータを検討する場合:
表1:
Key1 Key2 Key3 Value1 Value2 Value3
1 2 3 4 5 6
1 2 4 4 5 8
1 2 5 4 5 10
1 2 6 4 6 10
表 2 :
Key1 Key2 Key3 Value1 Value2 Value3
1 2 3 4 5 7
1 2 4 4 5 9
1 2 5 4 5 11
1 2 6 4 5 11
次のような結果が得られます:
Key1 Key2 Key3 DifferingFields
1 2 6 Value2
1 2 3 Value3
1 2 4 Value3
1 2 5 Value3
1 2 6 Value3