根据最新的记录过滤掉z表中的记录

  • 本文关键字:记录 过滤 最新 abap
  • 更新时间 :
  • 英文 :


我使用的是ztable,该表中有员工列表,每个员工都有唯一的IDpernr,但是数据库中的每个更改都反映为重复的ID,因此表看起来像这样:

<表类> pernr sname begindate enddate tbody><<tr>1Name11.1.20001.1.20101Name12.1.20101.1.20151Name12.1.201531.12.99992Name21.1.20161.1.20192Name22.1.201931.12.9999

您可以选择数据到内部表中,按结束日期降序排序,然后删除重复的比较。

FORM process_data.
SELECT pernr, sname, begindate, enddate
FROM ztable
INTO TABLE gt_salv_table
**ORDER BY pernr ASCENDING enddate DESCENDING.**
IF sy-subrc EQ 0.
DELETE ADJACENT DUPLICATES FROM gt_salv_table COMPARING pernr.
ENDIF.
ENDFORM.

正如futu所建议的,MAX(enddate)也可以使用,但是你不能在聚合查询中选择begindate,因为GROUP BY子句将需要所有未聚合的字段。如果业务逻辑允许,您可以同时使用MAX(开始日期)和MAX(结束日期)来获取所有数据。这里,假设所有记录的名称都是相同的。

SELECT pernr, sname, MAX(begindate) AS begindate, MAX(enddate) AS enddate
FROM ztable
INTO TABLE @gt_salv_table
GROUP BY pernr, sname.

最新更新