拥有一个旧的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%'
希望将EventID
1201 - 1200的经过时间SUM视为TimeFull
然后,我想在10小时内显示这一点,并查看我们称之为Downtime%
的百分比
假设SUM为2:00:00
我们将除以10:00:00
以显示以下
继续运行答案后我看到的内容
答案 0 :(得分:0)
/vendor
我不知道你的业务规则,但你会清楚地做出某种假设,即不会有两个“完整”和“清晰”事件在不同的车道上重叠。您似乎也假设较大的窗口将仅跨越正确配对的事件。我会按照这些假设去做。
在我看来,计算从“完整”到“清除”的时间可能更好,然后从100中扣除该百分比。这样做也可以很容易地根据车道编号匹配事件。如果您不喜欢这样,那么您可以轻松地恢复旧方法。根据样本日期,似乎描述文本上的匹配是重复的。也许您的数据实际上更复杂。