2012-05-11 2 views
1

エンジンの履歴データを照会するSQLデータベースがあります。この機能の1つは、ストアドプロシージャが毎日特定のイベントのすべてのデータを検索し、イベントが見つかった場合は新しいテーブルに挿入することです。SQL "Except"まだ問題があります

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の時間変化に従って更新される。

だから私は本当に必要なものは以下です:

我々はSQLで except機能によってサポートされていません知っている
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 

答えて

2

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 
+0

完璧!ご協力いただきありがとうございます!! – neilrudds

+0

あなたは大歓迎です:-) –

関連する問題