我有一个查询引擎历史数据的 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中的函数不支持哪个?