SQL Server:按组组合值
我有以下数据。我需要在status by ID上添加一个带有最终日期的列。因此,第一行的最终日期将是第二行的日期 原始数据:SQL Server:按组组合值,sql,sql-server,Sql,Sql Server,我有以下数据。我需要在status by ID上添加一个带有最终日期的列。因此,第一行的最终日期将是第二行的日期 原始数据: ID | STATUS | DATE -----+---------+----------- 1 | A | 2020-01-03 1 | B | 2020-01-07 1 | C | 2020-01-14 2 | A | 2020-01-04 预期结果: ID | STATUS |
ID | STATUS | DATE
-----+---------+-----------
1 | A | 2020-01-03
1 | B | 2020-01-07
1 | C | 2020-01-14
2 | A | 2020-01-04
预期结果:
ID | STATUS | DATE | FINAL_DATE
-----+---------+------------+------------
1 | A | 2020-01-03 | 2020-01-07
1 | B | 2020-01-07 | 2020-01-14
1 | C | 2020-01-14 |
2 | A | 2020-01-04 |
如何在SQLServer中实现它?有什么想法吗?使用窗口功能:
select *,
lead(date) over(partition by id order by date) FINAL_DATE
from tablename
请参阅。结果:
如果需要向表中添加列,请执行以下操作:
alter table original add column final_date date;
update o
set final_date = new_final_date
from (select o.*,
lead(date) over (partition by id order by date) as new_final_date
from original o
) o;
您想在表中添加一个新列,还是只需要一个select查询?
alter table original add column final_date date;
update o
set final_date = new_final_date
from (select o.*,
lead(date) over (partition by id order by date) as new_final_date
from original o
) o;