id1 と id2 が一意である同様の構造を持つ次の 2 つのテーブルがあります。
Table1
id1 id2 amt1 amt2 id3
1A 1 12 14 12A
2A 4 23 35 34V
3A 8 45 23 13D
.................................
Table2
id1 id2 amt1 amt2 id3
1A 1 12 27 12A
2A 4 67 35 34D
3A 8 45 23 13D
.................................
したがって、id1 と id2 はここでは一意であるため、amt が一致しない ID を教えてくれるクエリを作成したかったので、次のような単純なスクリプトを作成しました。
select T.id1,T.id2,
T.amt1, P.amt1,
T.amt2, P.amt2,
T.id3, P.id3
from
Table1 T,
Table2 P
where
T.id1=P.id1
T.id2=P.id2
(
nvl(T.amt1 ,0)-nvl(P.amt1 ,0)<>0 OR --used nvl to check if one table has null for other tables's number
nvl(T.amt2 ,0)-nvl(P.amt2 ,0)<>0 OR
T.id3 <>P.id3
);
これにより違いが得られますが、大きなテーブルで分析するのが難しくなり、多くの列と金額があり、多くの違いがあるとします。出力を以下に示す形式で表示したいとします。違いを探しているとしますTable1
id1 id2 difference in column
1A 1 amt2
2A 4 amt1,id3
上記のような出力を生成できるクエリを誰でも示すことができますか。