我在SQL Server中创建了一个数据集,但是如果根据步骤列中列出的步骤按顺序完成触发器,我需要通过事件ID获取true或false。下面的数据显示了步骤是按顺序完成的,所以我想查询EventID和一个值,告诉我它没有按顺序完成。数据图片可在以下链接中找到..
提前感谢您的帮助
https://docs.google.com/file/d/0B5TX97oiRQrHX3c1aG1hUFAxWFE/edit?usp=docslist_api
答案 0 :(得分:0)
首先:为什么日期和时间在不同的列中?这似乎没有意义,并使数据访问变得复杂(您必须将两者结合起来才能将时间与另一个进行比较)。
但是,任务相当简单:是否有任何记录存在较早步数的较早记录?
select
case when exists
(
select *
from events as this_step
where exists
(
select *
from events as earlier_step
where cast(earlier_step.dates as datetime) + cast(earlier_step.logtime as datetime) <
cast(this_step.dates as datetime) + cast(this_step.logtime as datetime)
and earlier_step.step > this_step.step
)
) then
'ERROR'
else
'OKAY'
end as status;