ABAP 分组取最新的2条记录
需求:
取出表中ZHR_KHND相等中最新的2条记录
方法:
先对"主键"进行分组,然后分组后取最大的2条
表内数据
人员编号 | 考核年度 | 季度 | 评估得分 | 评级 |
---|---|---|---|---|
1 | 2021 | 1 | 100 | A |
1 | 2021 | 2 | 100 | A |
1 | 2021 | 3 | 100 | A |
1 | 2021 | 4 | 100 | A |
2 | 2021 | 1 | 100 | A |
2 | 2021 | 2 | 100 | A |
2 | 2021 | 3 | 100 | A |
2 | 2021 | 4 | 100 | A |
期望结果
人员编号 | 考核年度 | 季度 | 评估得分 | 评级 |
---|---|---|---|---|
1 | 2021 | 3 | 100 | A |
1 | 2021 | 4 | 100 | A |
2 | 2021 | 3 | 100 | A |
2 | 2021 | 4 | 100 | A |
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)
.
弊端:
对于如果年度有相同的,则可能会有问题,比如
人员编号 | 考核年度 | 季度 | 评估得分 | 评级 |
---|---|---|---|---|
1 | 2021 | 1 | 100 | A |
1 | 2021 | 2 | 100 | A |
1 | 2021 | 3 | 100 | A |
1 | 2021 | 4 | 100 | A |
2 | 2021 | 1 | 100 | A |
2 | 2021 | 2 | 100 | A |
2 | 2021 | 3 | 100 | A |
2 | 2021 | 4 | 100 | A |
2 | 2021 | 4 | 110 | S |
结果
人员编号 | 考核年度 | 季度 | 评估得分 | 评级 |
---|---|---|---|---|
1 | 2021 | 3 | 100 | A |
1 | 2021 | 4 | 100 | A |
2 | 2021 | 4 | 110 | S |
2 | 2021 | 4 | 100 | A |
扩展:
如果是取第3条吧2改成3即可
备注:
以上数据和规则都是随意填的,仅作为测试样例
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架