希望有人能帮助我。我有一个看起来像下面的数据表
<div data-price="10" data-currency="USD"></div>
以数据的结构方式,创建日期始终设置为创建第一个JobID的日期。我想更改此设置,以便将创建日期设置为上一个JobID的ClosedDate。我理想的输出看起来像下面的
ID | JobID | CreatedDate | ClosedDate
3312 | 332 | 01/02/2018 | 03/02/2018
3312 | 223 | 01/02/2018 | 05/02/2018
3312 | 312 | 01/02/2018 | 01/03/2018
3312 | 445 | 01/02/2018 | 04/07/2018
有人知道实现这一目标的最佳方法吗?谢谢 杰西
答案 0 :(得分:3)
您想要lag()
:
select ID, JobID,
lag(ClosedDate, 1, CreatedDate) over (partition by id order by ClosedDate) as CreatedDate,
ClosedDate
from table t;
您没有声明任何DBMS,所以LAG()
可能会失败,但是您可以改用子查询:
select t.ID, t.JobID,
coalesce((select t1.ClosedDate
from table t1
where t1.id = t.id and t1.ClosedDate < t.ClosedDate
order by t1.ClosedDate desc
fetch first 1 rows only
), CreatedDate
) as CreatedDate, ClosedDate
from table t;
假设CreatedDate
和ClosedDate
的格式合理。在第二个版本中,您可能需要limit
子句或top (1)
括弧而不是fetch first ...
。