首页 > 解决方案 > 使用另一列中的现有值创建新列

问题描述

我有一张包含产品、价格和 date_start 属性的表格。最后一个告诉价格在哪一天发生了变化。

product    price    date_start
A          100      2010-01-20
A          23       2010-04-12
A          120      2012-05-03
....

我想修改表以添加 date_end 列。

product    price    date_start    date_end
A          100      2010-01-20    2010-04-12
A          23       2010-04-12    2012-05-03
A          120      2012-05-03    2015-03-18
....

希望有任何关于如何使用 sqlite 的提示

标签: sqlsqlite

解决方案


使用lead()

select t.*, lead(date_start) over (partition by product order by date_start) as date_end
from t;

如果您想使用“无限”未来日期而不是NULL每个产品的最后一条记录,请使用 3 参数形式:

select t.*,
       lead(date_start, 1, <default date here>) over (partition by product order by date_start) as date_end
from t;

推荐阅读