Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQL запрос в лог аварий  [new]
Sasha8111
Member

Откуда:
Сообщений: 33
Уважаемые специалисты - в SQL не спец по этому сильно не осуждайте

Есть лог (таблица в базе данных SQL EXPRESS 2008) аварийных сообщений и предупреждений - хранит аварийные состояния от системы управления инженерным оборудованием. Данный лог постоянно дополняется отдельным потоком (приложением) - на него я не могу повлиять.

Технология заполнения лога такая:
---------------------------------------
При появлении аварии/предупреждения в лог добавляется одна запись (ключевой момент сдесь тот, что в поля OnDate/OnTime - записываются значения даты/времени появления аварии, а в поля OffDate/OffTime нули)

При исчезновении аварии/предупреждения в лог также добавляется одна запись (ключевой момент сдесь тот, что значения всех полей идентичные записи появления аварии, за исключением OffDate/OffTime - в них записываются значения даты/времени исчезновения аварии)

Вопрос такой!
как построить SQL запрос, что бы результатом была таблица только активных аварий (пример смотрите в приложенной схеме)

К сообщению приложен файл. Размер - 95Kb
30 мар 12, 16:55    [12341878]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос в лог аварий  [new]
qwerty112
Guest
так, может
select * from

(select top 1 with ties *
from xz
order by row_number() over (partition by tag order by OnDate desc, OnTime desc) ) a

where OffDate is null
30 мар 12, 17:45    [12342272]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос в лог аварий  [new]
qwerty112
Guest
qwerty112
так, может
select * from

(select top 1 with ties *
from xz
order by row_number() over (partition by tag order by OnDate desc, OnTime desc) ) a

where OffDate is null

"всмотрелся" немного ...
+

автор, это, к слову, твой косяк, размещать данные "принскрином" - это надо быть "харашо укуренным"

т.е. - OnDate/OnTime у "возникновения" аварии и у её "ликвидации" - совпадает ?

select * from

(select top 1 with ties *
from xz
order by row_number() over (partition by tag order by OnDate desc, OnTime desc) ) a

where OffDate is null
and not exists(select 1 from xz where a.tag=xz.tag and a.OnDate=xz.OnDate and a.OnTime=xz.OnTime and OffDate is not null )
31 мар 12, 12:29    [12344696]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить