计算从一列开始的经过时间

时间:2018-03-13 22:48:48

标签: sql sql-server

拥有一个旧的SQL 2000 DB ...想要看到基于在另一列中有两个单独的值,从同一列中经过的时间差异。

DECLARE @Now DATETIME,
    @Yesterday DATETIME,
    @StartTime VARCHAR(16),
    @EndTime VARCHAR(16)
SET @StartTime = '01:00:00AM'
SET @EndTime   = '11:59:00PM'
SET @Now = GETDATE()
SET @Yesterday = DATEADD(dd, DATEDIFF(dd, 0, @Now), -1) 
select EventTime, Description, EventID
from EventLog
WHERE   EventTime BETWEEN @Yesterday + ' ' + @StartTime
                  AND     @Yesterday + ' ' + @EndTime
          AND     EventID in (1200 ,1201)
          AND     Description LIKE 'Lane _ Full PE%'

enter image description here

希望将EventID 1201 - 1200的经过时间SUM视为TimeFull 然后,我想在10小时内显示这一点,并查看我们称之为Downtime%的百分比 假设SUM为2:00:00我们将除以10:00:00以显示以下

enter image description here

---------------------------------

继续运行答案后我看到的内容

enter image description here

1 个答案:

答案 0 :(得分:0)

/vendor

我不知道你的业务规则,但你会清楚地做出某种假设,即不会有两个“完整”和“清晰”事件在不同的车道上重叠。您似乎也假设较大的窗口将仅跨越正确配对的事件。我会按照这些假设去做。

在我看来,计算从“完整”到“清除”的时间可能更好,然后从100中扣除该百分比。这样做也可以很容易地根据车道编号匹配事件。如果您不喜欢这样,那么您可以轻松地恢复旧方法。根据样本日期,似乎描述文本上的匹配是重复的。也许您的数据实际上更复杂。

http://rextester.com/DAFR66165