sql—通过id标识从日期到空的更改

pepwfjgg  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(509)

希望有人能帮忙。
我有一个数据集,简化后如下所示:

ID   Trans_created_date  Closed date
1        01/01/2018       NULL
2        02/01/2018       NULL
3        03/01/2018       NULL
2        05/01/2018       05/01/2018
2        07/01/2018       NULL
2        08/01/2018       NULL
2        09/01/2018       NULL
1        10/01/2018       10/01/2018
2        11/01/2018       NULL
2        12/01/2018       12/01/2018

我希望通过id标识重新打开的记录,逻辑是每次关闭日期从实际日期变为null值时,通过id标识重新打开的记录。
如上所述,可以多次重新打开一个id,并且在此期间可能有许多关闭日期为空的事务。因此,需求是识别id从日期变为null的第一个事务。

1yjd4xko

1yjd4xko1#

因此,需求是识别id从日期变为null的第一个事务。
这似乎是:

select id, min(trans_created_date)
from (select t.*,
             lag(closed_date) over (partition by id order by trans_created_date) as last_closed_date
      from t
     ) t
where closed_date is null and
       next_cd_closed_date is not null
group by id;

逻辑有点复杂,因为 NULLlead() 可以引用下一个 NULL 或是最后一张唱片 id . 为了避免这个问题,比较的是id的下一个记录是否是具有相同“null”状态的id的下一个记录。这些需要不同的记录才能改变。

相关问题