如何使用 window 函数 select sql 中的第三、第四、第五个日期

how to select third, fourth, fifth date in sql using window function

电影的table租借有这个数据:

  rental_id rental_ts   inventory_id    customer_id return_ts
  11909     2/14/2020     871           474         3/15/2020
  12222     2/14/2020     3949          22          4/18/2020

如何生成对:

第一个rental_ts,第二个租赁日期,

第二次租赁,第三次租赁日期, ....

第二个 LAST 租赁日期,最后一个租赁日期,

上次租赁日期,null?

使用 window 函数 - 这不起作用:

select 
customer_id,
rental_ts as first_rental_date , 
lead(rental_ts) over(partition by customer_id order by rental_ts) as second_rental_date,
lead(lead(rental_ts) over(partition by customer_id order by rental_ts)) as third_rental_date

from rental 

我预计:

customer_id , rental_date, second_rental_date, third_rental_date ... second_last_rental_date, last_rental_date

1            2/14/2020       1/14/2020      12/13/2019    12/13/2019
2            5/16/2020       5/13/2020      5/07/2020     4/29/2020

基本上我需要超过 1 级后退 - 但不知道如何使用它,我在工作中只使用 1 lead() 或 lag() 来比较当前和以前的日期

不需要使用动态数据透视表吗?但是如果你想要这样,那么你可以使用 lead(rental_ts,2), lead(rental_ts,3) 等...

 select 
customer_id,
rental_ts as first_rental_date , 
lead(rental_ts) over(partition by customer_id order by rental_ts) as second_rental_date,
lead(rental_ts,2) over(partition by customer_id order by rental_ts) as third_rental_date

from rental