我希望你能帮助我解决这个问题。我知道标题有点令人困惑,所以让我澄清一下。假设我的列"ORDERS"
包含行"ORDER ID"
,"ORDER #"
,"CODE"
和"DATE"
假设订单可以有相同的订单中的大量代码(因此此表将加入另一个,但目前不相关)并且在任何特定时间。
如果我想检索具有相同“CODE”的行的ORDER#,并且在第一个“CODE”之间,则在100小时后不应该有另一个“CODE”。但是,我还想要在100小时之后出现的第一个“代码”。
我不是在寻找确切的答案。我主要看是否有办法做到这一点。它可以用表的多个实例来完成吗?如何实现逻辑呢?
谢谢!
答案 0 :(得分: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#
和code
选择距离上一行超过100小时的行。