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;