如何从同一表中的另一条记录中获取值?
我有以下表结构。如何创建视图或创建选择语句添加一列,该列显示来自同一表中相同 notice# 字段的另一条记录的值。
ID notice# notice Date Sequence
1 ABCD1 1/2/2021 1
2 ABCD1 1/3/2021 2
3 ABCD1 1/3/2021 3
4 ABCD2 1/3/2021 1
5 ABCD2 1/3/2021 2
预期结果:我想添加一个新列预先通知日期为
ID notice# notice Date Sequence Prior Noice Date
1 ABCD1 1/2/2021 1
2 ABCD1 1/3/2021 2 1/2/2021
3 ABCD1 1/3/2021 3 1/3/2021
4 ABCD2 1/3/2021 1
5 ABCD2 1/3/2021 2 1/3/2021
- 如果序列 1 则先前通知日期 = null
- 如果序列 2 则先前通知日期 = 序列 1 的 SO 日期
- 如果序列 3 则先前通知日期 = 序列 2 的 SO 日期
回答
LAG/LEAD 函数可用于实现此目的。
http://sqlfiddle.com/#!18/df7f2/4
select *, lag([notice date]) over (partition by notice# order by [sequence])
from table1
order by notice#, [sequence];