0

我希望你能帮我解决这个问题。我知道标题有点混乱,所以让我澄清一下。假设我有一列包含"ORDERS"rows "ORDER ID""ORDER #""CODE""DATE"

假设订单可以在同一订单中有很多代码(因此此表将加入另一个表,但目前不相关)并且在任何特定时间。

如果我想检索具有相同“CODE”的行的 ORDER #,并且在第一个“CODE”之间,100 小时后不应该有另一个“CODE”。但是,我也想要在 100 小时之后出现的第一个“代码”。

我不是在寻找确切的答案。我主要看是否有办法做到这一点。可以用表的多个实例来完成吗?以及如何实现逻辑?

谢谢!

4

1 回答 1

0

我认为您想要的是lag()功能:

select t.*
from (select t.*,
             lag(date) over (partition by order#, code order by date) as prevdate
      from t
     ) t
where date - prevdate >= 100/24.0 or prevdate is null;

这将获取order#,code组合的上一个日期。order#然后它选择与前一个具有相同和100 小时以上的行code

于 2013-06-03T20:03:14.067 回答