Kri*_*hna 3 sql t-sql sql-server
我想从前一行获取数据。我使用了 LAG 功能,但没有得到预期的结果。
桌子:-
col1 col2 col3
ABCD 1 Y
ABCD 2 N
ABCD 3 N
EFGH 4 N
EFGH 5 Y
EFGH 6 N
XXXX 7 Y
Run Code Online (Sandbox Code Playgroud)
预期结果
col1 col2 col3 col4
ABCD 1 A NULL
ABCD 2 B A
ABCD 3 C B
EFGH 4 A NULL
EFGH 5 B A
EFGH 6 E B
XXXX 7 F NULL
Run Code Online (Sandbox Code Playgroud)
Col4 应保存按 Col1 中的值分组的前一行的数据。请让我知道如何实现这一目标。
使用lag()功能
select *, lag(col3) over (partition by col1 order by col2) as col4
from table t;
Run Code Online (Sandbox Code Playgroud)
但是,subquery如果您SQL没有,您也可以使用LAG()
select *,
(select top 1 col3
from table
where col1 = t.col1 and col2 < t.col2
order by col2 desc
) as col4
from table t;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6819 次 |
| 最近记录: |