我使用的是ztable,该表中有员工列表,每个员工都有唯一的IDpernr
,但是数据库中的每个更改都反映为重复的ID,因此表看起来像这样:
<表类>
pernr
sname
begindate
enddate
tbody><<tr>1 Name1 1.1.2000 1.1.2010 1Name1 2.1.2010 1.1.2015 1Name1 2.1.2015 31.12.9999 2Name2 1.1.2016 1.1.2019 2Name2 2.1.2019 31.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.