查询流程订单

时间:2015-01-22 15:25:57

标签: sql sql-server

我在SQL Server中创建了一个数据集,但是如果根据步骤列中列出的步骤按顺序完成触发器,我需要通过事件ID获取true或false。下面的数据显示了步骤是按顺序完成的,所以我想查询EventID和一个值,告诉我它没有按顺序完成。数据图片可在以下链接中找到..

提前感谢您的帮助

https://docs.google.com/file/d/0B5TX97oiRQrHX3c1aG1hUFAxWFE/edit?usp=docslist_api

1 个答案:

答案 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;