Sqlite查询以检索由于特定列而已更改的所有记录

问题描述 投票:0回答:1

我想从我的表中检索表中其中一列中发生状态更改的所有记录。请查看下表:

   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基础。

  1. 然后是另一列,我想从Unix时间戳格式的ERDAT字段中看到这两个事件之间的滞后]

    例如,对于第一个BANFN 11111111,输出应如下所示:

  2. 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 ...

sql sqlite datetime subquery unix-timestamp
1个回答
0
投票

这是使用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;
© www.soinside.com 2019 - 2024. All rights reserved.