ABAP 分组取最新的2条记录

需求:

取出表中ZHR_KHND相等中最新的2条记录

方法:

先对"主键"进行分组,然后分组后取最大的2条

表内数据

人员编号考核年度季度评估得分评级
120211100A
120212100A
120213100A
120214100A
220211100A
220212100A
220213100A
220214100A

期望结果

人员编号考核年度季度评估得分评级
120213100A
120214100A
220213100A
220214100A

CODE

  SELECT
    PA9502_1~PERNR,
    PA9502_1~ZHR_KHND,
    PA9502_1~ZHR_PJJJ
    FROM PA9502 AS PA9502_1
   WHERE 2 GE (
      SELECT COUNT(*)
        FROM PA9502 AS PA9502_2
       WHERE PA9502_2~PERNR EQ PA9502_1~PERNR
         AND PA9502_2~ZHR_KHND EQ PA9502_1~ZHR_KHND
         AND PA9502_2~ZHR_PJJJ GE PA9502_1~ZHR_PJJJ
    )
    ORDER BY PA9502_1~PERNR,PA9502_1~ZHR_KHND DESCENDING
    INTO TABLE @DATA(LT_PA9502_2)
    .

弊端:

对于如果年度有相同的,则可能会有问题,比如

人员编号考核年度季度评估得分评级
120211100A
120212100A
120213100A
120214100A
220211100A
220212100A
220213100A
220214100A
220214110S

结果

人员编号考核年度季度评估得分评级
120213100A
120214100A
220214110S
220214100A

扩展:

如果是取第3条吧2改成3即可

备注:

以上数据和规则都是随意填的,仅作为测试样例

posted @ 2022-02-21 11:14  linhuang  阅读(28)  评论(0编辑  收藏  举报  来源