2017-01-11 11 views
0

テーブルから別のテーブルにないレコードを取得する方法を知っています。しかし、これは私が解決できないものです。私には眺めとテーブルがあります。 1つはビューからの行で作成された一時テーブルです。しかし、レコードの操作のために私は今レコードが失われており、いくつかはカウントがもはやマッチしません。たとえば、元のSSNを20個持っている場合、現在は17か24のレコードが一時的に存在し、すべてが一致する必要があります。カウントが一致しない2つのテーブルのレコードとカウントを取得する

このようなことはあまり起こっていませんが、何千もの記録があり、手動でそれらをすべて通過するのは面倒です。

レコードを取得する方法はありますかカウントが一致しない場合はカウントしますか?結果には、各テーブルのカウントとテーブル名を含めることができますか?

は、ここで私が持っているものです。

Select vw.UPC as [View], COUNT(vw.UPC) as [view Amount], tb.UPC as [Temp], COUNT(tb.UPC) as [temp Amount] 
From #tbTransfOUT tb 
JOIN vwTrans vw 
ON tb.UPC = vw.UPC 
Where vw.UPC NOT IN (Select vw2.UPC 
        From vwTrans vw2 
        JOIN #tbTransfOUT tb2 
        ON tb2.UPC = vw2.UPC 
        WHERE (Select COUNT(UPC) From #tbTransfOUT Group By UPC) = 
          (Select COUNT(UPC) From vwTrans Group By UPC) 
Group By vw.UPC 
Order By vw.UPC, COUNT(vw.UPC), tb.UPC, COUNT(tb.UPC) 

を私はソース名(表示または一時テーブル)の代わりに、余分な列を含めたい場合は可能。これはもちろん、レコード数を比較するためにプロシージャの最後に実行されるコードの一部です。

答えて

1

私は以下がうまくいくと思います。各CTEは個別にテストできます。完全外部結合は、テーブルの1つに特定のUPCのレコードがない状況を検出します。

WITH VWCount (UPC, VWCount) 
as 
(SELECT UPC, COUNT(*) FROM vwTrans 
    GROUP BY UPC), 
TMPCount (UPC, TMPCount) AS 
(SELECT UPC, COUNT(*) FROM #tbTransFout 
GROUP BY UPC) 

SELECT vw.UPC, vw.VWCount, tmp.UPC, tmp.TMPCount 
    FROM VWCount vw 
    FULL OUTER JOIN TMPCount tmp 
    ON vw.UPC = tmp.UPC 
    WHERE COALESCE(vw.VWCount,0) <> COALESCE(tmp.TMPCount,0) 
+0

WOW!本当にありがとうございました。これはまさに私が求めていたものです! –

+0

よろしくお願いします。@TiltingCode] –

関連する問題