所以我有下表:
Id Billing_Date
A00 2020-01-01
A00 2020-02-01
A00 2020-04-01
B91 2020-01-01
B91 2020-03-01
B91 2020-04-01
C11 2020-01-01
我想做的是从下一行得到日期,如果我找不到这个日期,那么我将填写帐单日期+60天。当然都是基于身份证。我的数据最终应该是这样的:
Id Billing_Date Billing_Date_Duo
A00 2020-01-01 2020-02-01
A00 2020-02-01 2020-04-01
A00 2020-04-01 2020-06-01
B91 2020-01-01 2020-03-01
B91 2020-03-01 2020-04-01
B91 2020-04-01 2020-06-01
C11 2020-01-01 2020-03-01
我该怎么做?我知道我应该使用像lead()这样的东西,但不知道如何在这里这样做,以及如何结合case when。
我以为这样行得通,但没有:
select Id, Billing_Date,
lead(Billing_Date) over (order by Id) as Billing_Date_Duo
1条答案
按热度按时间zbq4xfa01#
你可以用
lead()
在正确的分区上(id
)以及order by
,和coalesce()
要指定默认值:你可以用3形式的参数
lag()
:db小提琴演示