2012-05-11 4 views
1

У меня есть база данных SQL, которая запрашивает данные истории движков. Одна из особенностей заключается в том, что ежедневная хранимая процедура будет осуществлять поиск по всем данным для конкретного события, и если событие будет найдено, оно будет вставляться в новую таблицу.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 ??

ответ

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

Perfect !! Спасибо за вашу помощь!! – neilrudds

+0

Добро пожаловать :-) –

Смежные вопросы