1

エンジンの履歴データを照会する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

exceptSQLの関数でサポートされていないことがわかっているのはどれですか?

4

1 に答える 1

2

二度それ以外はできませんでしたか?

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 
from exempts
except 
select ID_Location, iddown, OrigDtUp, dtdown, dtup 
from exempts
于 2012-05-11T12:10:17.603 に答える