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

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

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

  1. ID Trans_created_date Closed date
  2. 1 01/01/2018 NULL
  3. 2 02/01/2018 NULL
  4. 3 03/01/2018 NULL
  5. 2 05/01/2018 05/01/2018
  6. 2 07/01/2018 NULL
  7. 2 08/01/2018 NULL
  8. 2 09/01/2018 NULL
  9. 1 10/01/2018 10/01/2018
  10. 2 11/01/2018 NULL
  11. 2 12/01/2018 12/01/2018

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

1yjd4xko

1yjd4xko1#

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

  1. select id, min(trans_created_date)
  2. from (select t.*,
  3. lag(closed_date) over (partition by id order by trans_created_date) as last_closed_date
  4. from t
  5. ) t
  6. where closed_date is null and
  7. next_cd_closed_date is not null
  8. group by id;

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

相关问题