こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

2つのテーブルに差異があるデータを抽出する方法

このようなことが実現できるのかというご相談です。
ご存知の方がいらっしゃいましたらご教授ください。
環境はSQL Server2008です。

2つのテーブルがあります。
1度のSQLでその2つを比較し、以下の条件のデータを抽出することは可能なものでしょうか?
(1)テーブルAに存在するが、テーブルBにはない
(2)テーブルBに存在するが、テーブルAにはない
(3)テーブルAとBの両方に存在するが、項目のいずれかが異なる。

なお、テーブルBには、テーブルAには存在しない項目がありますが、
その項目は比較対象外です。
お知恵を拝借できましたら、とてもありがたいです。
よろしくお願いいたします。

■テーブルA
Key Komoku1 Komoku2
001 1000 2000
002 2000 3000
005 3000 4000
006 4000 5000

■テーブルB
Key Komoku1 Komoku2 Komoku3
001 1000 2000 X1
003 2000 3000 X2
005 3000 5000 X3
006 4000 5000 X4

■結果
Key Komoku1 Komoku2
002 2000 3000
003 2000 3000
005 3000 4000 (あるいは 005 3000 5000)

※005はテーブルA,B両方には存在するが、koumoku2の値が違う例です。
その場合、どちらのテーブルの値を出力しても構いませんし、あるいは両方を
出力しても構いません。

よろしくお願いいたします。

投稿日時 - 2015-08-05 00:12:43

QNo.9024570

困ってます

質問者が選んだベストアンサー

こんな感じでどうでしょうか。先頭列はあった方がわかりやすいのでつけています。

SELECT 'テーブルA',*
FROM
(SELECT [Key],Komoku1,Komoku2 FROM テーブルA
EXCEPT
SELECT [Key],Komoku1,Komoku2 FROM テーブルB) a
UNION ALL
SELECT 'テーブルB',*
FROM
(SELECT [Key],Komoku1,Komoku2 FROM テーブルB
EXCEPT
SELECT [Key],Komoku1,Komoku2 FROM テーブルA) b
ORDER BY 2

投稿日時 - 2015-08-05 12:32:30

補足

完全にやりたいことが実現できました。
改めて、感謝申し上げます。
ありがとうございます。

投稿日時 - 2015-08-05 18:33:47

お礼

ありがとうございます!
明日まで出張のため、直ぐにはできないのですが、試させて頂きます。

投稿日時 - 2015-08-05 13:06:42

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問