エンジンの履歴データを照会するSQLデータベースがあります。機能の1つは、ストアドプロシージャが毎日すべてのデータを検索して特定のイベントを探し、イベントが見つかった場合はそれを新しいテーブルに挿入することです。
問題は、このデータが一意でなければならないことです...
テーブルヘッダーは次のとおりです。
ID / ID_Location / IDDown / IDUp / DtDown / DtUp / TimeDifference / IsExempt / Reason / Details / OrigDtUp
そしてSQLクエリは次のとおりです。
insert into exempts(ID_Location, iddown, idup, dtdown, dtup, timedifference)
select ID_Location, iddown, idup, dtdown, dtup, DATEDIFF(MINUTE, dtdown, dtup) as timedifference
from @tmptbl
except
select ID_Location, iddown, idup, dtdown, dtup, timedifference from exempts
ユーザーは、DtUp(エンジンがオンラインに戻った時間)など、これらの値の一部を調整できます。DtUp値が変更されると、元のDtUp値がOrigDtUpフィールドに保存され、TimeDifferenceがDtDownおよびDtUpの時間変動に従って更新されます。
だから私が本当に必要なのはこれです:
insert into exempts(ID_Location, iddown, idup, dtdown, dtup, timedifference)
select ID_Location, iddown, idup, dtdown, dtup, DATEDIFF(MINUTE, dtdown, dtup) as timedifference
from @tmptbl
except
select ID_Location, iddown, idup OR OrigDtUp, dtdown, dtup from exempts
except
SQLの関数でサポートされていないことがわかっているのはどれですか?