2015-10-20 3 views
0

У меня есть представление, в котором перечислены времена, когда конкретный демпфер открыт (в производственной среде). Я ограничусь запросом этого представления. В основном, данные выглядит следующим образом:Вложенный SELECT как часть списка полей

dateTime  value 
9/1/15 0:01  1 
9/1/15 0:10  0 
9/1/15 1:10  1 
9/1/15 2:00  NULL 
9/1/15 3:01  0 

Мне нужно найти каждый раз, когда заслонка открыта (1) и определить, когда он закрыт (0). Нули, которые мы предполагаем открытыми (такими же, как 1).

Каков наилучший способ найти каждую запись, где значение = 1, а затем следующее 0 после этого 1?

Это историческая БД, но она в основном имитирует SQL почти всеми способами.

ответ

0

Вот код, который закончился работой - для потомков.)

SELECT DateTime, Value, 
(SELECT TOP (1) hClose.dateTime FROM history hClose WHERE 
hClose.dateTime > history.DateTime 
AND hClose.TagName = 'TAGNAMEHERE' 
AND hClose.Value < 10 
AND wwRetrievalMode = 'average' 
AND wwResolution = 600000 
ORDER BY dateTime) as closeTime 
FROM history 
WHERE dateTime BETWEEN '9/1/15 00:00' AND '10/1/15 0:00' 
AND tagName = 'TAGNAMEHERE' 
AND (VALUE > 10 OR VALUE IS NULL) 
AND wwRetrievalMode = 'average' 
AND wwResolution = 60000 

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

  • Нет связанных вопросов^_^