1

私たちの組織には、インターフェースによって結合された一対のシステムがあります。システム A はレコード (約 1000/日) の作成に使用され、システム B はそれらの表示 (システム A およびその他のソースから) に使用されます。A からの一部のレコードが B へのインターフェイスを適切に通過していないことがわかりました。どのレコードが通過していないかを特定しようとしています。A のレコードのテーブルと B のレコードのテーブルがあります。最初に、アカウント番号フィールド、日付フィールド、別の時間フィールドを使用してそれらを結合しました。その後、レコードの 8 ~ 10% で、テーブル B のタイム スタンプが 1 分であることがわかりました。表 A の対応するレコードとは異なります (インターフェイスで発生します。理由は不明です)。

テーブル B にはあるが A には含まれていない [説明] フィールドを使用することで、B のレコードとリンクしていないテーブル A のレコードを見つけることができたので、インターフェイスで交差しなかった項目を表示できました。

結合ステートメントで datediff を使用しようとしましたが、1 分の差異を許可しようとしましたが、それでも結合を取得しました。結果を調べると、結果が非​​常に異なる時間フィールドを持つレコードを結合していることがわかります。私が使用しようとしたステートメントは以下のとおりです。

select TableA.NoteDate, TableB.ReportDT, TableA.NoteTime, TableB.ReportTime, 
TableA.UserName,     TableA.AcctNum, TableB.AccountNumber, TableA.NoteID, 
TableB.Description
from TableA

left join TableB on 

( 
TableA.NoteDate =  TableB.ReportDT and 
DATEDIFF(MINUTE, TableA.NoteTime, TableB.ReportTime) <= 1 and 
TableA.AcctNum = TableB.AccountNumber
)

WHERE
TableA.txtNoteDate >= '2013-09-01' AND
TableA.txtNoteDate <= '2013-09-30' And 
Description is NULL

ORDER BY Description

私は正しい軌道に乗っていますか、それともまったく別の方向からこれにアプローチする必要がありますか?

4

0 に答える 0