如何根据另一行的开始日期获取一行的结束日期



我有一个带有库存报告的表,其中包含项目列表、位置、项目进入位置的日期:

例如下表:

  • 物品1于2020年1月1日进入仓库1
  • 2020年2月入库_1
  • 三月份,物品进入wahrehouse_2(这意味着它从仓库1出来(

我需要建立一个每月每个仓库中有多少物品的摘要。我面临的挑战是,我没有结束日期栏,所以对于2020年2月,它是空白的,而它应该显示项目1仍在"中;仓库_ 1";

为此,我想添加一个";end_ date";从该项目的下一行开始计算日期的列(对于第1行,当物品移动到"仓库_2"时,结束日期是2020-03-01。

位置
item_id 日期
第1项 2020-01-01 仓库_1
第1项 2020-03-01 仓库_2
第1项 2020-08-01 仓库_1

要计算end_date,请使用lead():

select t.*,
lead(date) over (partition by item_id order by date) as end_date
from t;