Sql 窗口函数-计算当前记录和以前记录之间的差异
我有这样的记录-Sql 窗口函数-计算当前记录和以前记录之间的差异,sql,postgresql,Sql,Postgresql,我有这样的记录- patient claim provider date 460057 25494 3982 20200408 460057 25495 3982 20200410 46037 2592 396 20210110 46037 2593 393 20201210 46037 2594 394 20201114 我想按患者id对记录进行分区,并按索赔进行排序。然后我想找出索赔日期
patient claim provider date
460057 25494 3982 20200408
460057 25495 3982 20200410
46037 2592 396 20210110
46037 2593 393 20201210
46037 2594 394 20201114
我想按患者id对记录进行分区,并按索赔进行排序。然后我想找出索赔日期之间的差异。请注意,不同的患者可能有不同数量的索赔
我期望的结果是-
patient claim provider date diff
460057 25494 3982 20200408 2
460057 25495 3982 20200410 0
46037 2592 396 20210110 31
46037 2593 393 20201210 26
46037 2594 394 20201114 0
31是
20201210
和20210110
日期之间的差异假设日期存储为日期,则您可以使用lead()
:
如果date
是一个字符串或数字,则应修复数据,以便将日期存储为日期。您还可以在查询本身中转换为日期
select t.*,
lead(date) over (partition by patient order by date) - date as diff
from t;