sql - 使用另一列中的现有值创建新列
问题描述
我有一张包含产品、价格和 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 的提示
解决方案
使用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;