当我使用
LAG(Static_Col_2, 1) OVER (ORDER BY Static_Col_1) AS LAGged_Col
我得到这些结果:
Static_Col_1 Static_Col_2 LAGged_Col
----------------------------------------
1 456 NULL
2 457 456
3 458 457
4 459 458
5 460 459
5 461 460
5 462 461
但是我想要:
Static_Col_1 Static_Col_2 LAGged_Col
----------------------------------------
1 456 NULL
2 457 456
3 458 457
4 459 458
5 460 459
5 461 459
5 462 459
当重复“ 5”时,LAG每次应指向“ 4”。
答案 0 :(得分:2)
我认为您不能在SQL Server中使用简单的窗口函数来完成此操作。您可以嵌套窗口函数或使用group by
/ join
:
select t.*, tt.prev_col2
from t join
(select col1, lag(max(col2)) over (order by col1) as prev_col2
from t
group by col1
) tt
on t.col1 = tt.col1
order by 1;
Here是db <>小提琴。