0

私は2つのテーブルを持っています。1つには102845レコードがあり、もう1つには98496があります。小さいテーブル(4349)には表示されないが、大きいテーブルには表示されるレコードを見つける必要があります。これらは私が数字を作成する方法です:

--98496

drop table #test2
select a.*, B.Delq_Sep12, b.Bal_Sep12, b.Queue_Sep12 
into #test2
from #test4 b
join pcd a on  (a.ACCOUNT_NUMBER = B.account_number)

--102845

drop table #test1
select a.*, B.Delq_Sep12, b.Bal_Sep12, b.Queue_Sep12,
into #test1
from #test4 b 
left join pcd a on  (a.ACCOUNT_NUMBER = B.account_number)

ありがとう

4

2 に答える 2

1
select * from #test1
except
select * from #test2

もちろん、これは #test2 のすべてのレコードが #test1 にあることを前提としています。

逆を確認したい場合は、クエリを逆にします。

select * from #test2
except
select * from #test1
于 2012-10-16T10:41:32.310 に答える
0

明らかに、最初のクエリは 2 つのテーブルから一致する行のみを取得します。2 つ目は、すべての行を取得しbながら、一致する場所からデータを取得します。a一致しない場合、a列は NULL で埋められます。

これで、2 つの結果セットの違いは、実際には の一致しない行になりbます。これらの行を取得するには、次のように NULL チェックを使用して 2 番目のクエリを使用できます。

select a.*, B.Delq_Sep12, b.Bal_Sep12, b.Queue_Sep12,
from #test4 b 
left join pcd a on  (a.ACCOUNT_NUMBER = B.account_number)
where a.ACCOUNT_NUMBER is null

つまり、不要#test1または#test2必要ありません。一致しない行を直接クエリするだけです。

于 2012-10-17T15:25:48.103 に答える