私たちの組織には、インターフェースによって結合された一対のシステムがあります。システム 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
私は正しい軌道に乗っていますか、それともまったく別の方向からこれにアプローチする必要がありますか?