我想从我的表中检索表中其中一列中发生状态更改的所有记录。请查看下表:
BANFN BSART FRGKZ ERNAM ERDAT
11111111 NB 2 A 1533247200
11111111 NB 4 A 1534111200
22222222 NB 2 C 1548111600
22222222 NB 4 C 1559858400
33333333 NB 2 D 1559858400
33333333 NB 4 D 1559858400
44444444 NB 2 E 1559858400
我现在的问题是1.无论列FRGKZ从2变为4,我想检索所有的BANFN基础。
例如,对于第一个BANFN 11111111,输出应如下所示:
BANFN ERNAM BSART LAG_In_Between Final_Status_FRGKZ
11111111 A NB ERDAT at status 4 - ERDAT at status 2 4
输出应包含以下列:
BANFN ERNAM BSART LAG_In_Between Final_Status_FRGKZ
我想从我的表中检索表中其中一列中发生状态更改的所有记录。请查看下表:BANFN BSART FRGKZ ...
这是使用lag()
的便利位置:
select t.*, (erdate - prev_erdat)
from (select t.*,
lag(frgkz) over (partition by banfn order by erdat) as prev_frgkz,
lag(frgkz) over (partition by banfn order by erdat) as prev_erdat
from t
where frgkz in (2, 4)
) t
where frgkz = 4 and prev_frgkz = 2;