嵌套 SELECT 作为字段列表的一部分
Nested SELECT as part of field listing
我有一个视图列出了特定阻尼器打开的时间(在制造环境中)。我仅限于查询此视图。基本上,数据如下所示:
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 以及 1 之后的下一个 0 的每个条目的最佳方法是什么?
它是一个 Historian DB,但它基本上在几乎所有方面都模仿 SQL。
这是最终有效的代码 - 供后代使用。 :)
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
我有一个视图列出了特定阻尼器打开的时间(在制造环境中)。我仅限于查询此视图。基本上,数据如下所示:
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 以及 1 之后的下一个 0 的每个条目的最佳方法是什么?
它是一个 Historian DB,但它基本上在几乎所有方面都模仿 SQL。
这是最终有效的代码 - 供后代使用。 :)
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