【发布时间】:2021-06-20 10:50:42
【问题描述】:
我有一个如下所示的表格:
此表由许多行组成。我想使用 LAG 函数来计算 cyclestart 和 getdate() 之间的日期差,以获取最新记录与前一个记录的周期结束时间,否则它会计算所有记录的 LAG,我不能这样在这么大的桌子上。
select
@AssetID,
@ProductionDay AS 'Production Date',
shift,
SKU,
CycleEnd AS 'Press Close Time',
@shift12,
cast( (CycleEnd - lag(CycleEnd) over (order by cycleend)) as datetime) as 'Cure Time'
from
Cycle
where
cycle.ID = @CycleID
如果我使用TOP 1 或TOP 2,那么它在治愈时间内给我NULL。
【问题讨论】:
-
您可以创建一个具有
getdate()的虚拟记录,然后将您选择的最后一条记录与导致 2 条记录的虚拟记录合并 => 立即使用滞后功能 -
请提供样本数据和期望的结果。我只是不明白这个解释:“计算 cyclestart 和 getdate() 之间的日期差以获取 cycleend 时间,在最新记录上与以前的记录对比”。
-
lag(CycleEnd,1, GETDATE()) over (order by cycleend)对你有用吗?
标签: sql sql-server lag