1

我有一个查询引擎历史数据的 SQL 数据库。其中一个特点是,存储过程每天都会在所有数据中搜索特定事件,如果找到该事件,它将把它插入到一个新表中。

问题是这些数据必须是唯一的......

表头如下:

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中的函数不支持哪个?

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 回答