这是我希望在AFRU
表中选择的数据样本。
+----------------------+-----------------+-------------------------+
| Confirmation (RUECK) | Counter (RMZHL) | Finish Execution (IEDD) |
+----------------------+-----------------+-------------------------+
| 30116 | 1 | 08/26/2014 |
| 30116 | 2 | 08/27/2014 |
| 30116 | 3 | 09/27/2013 |
+----------------------+-----------------+-------------------------+
鉴于此数据集,我想选择最后一行,因为它包含最高RMZHL
值(我实际上只在该记录的IEDD
值之后)。这是我尝试使用的代码:
SELECT MAX( rmzhl ), iedd FROM afru
INTO (@DATA(lv_rmzhl), @DATA(lv_iedd))
WHERE rueck = '0000030116'
GROUP BY rmzhl, iedd.
...
<some fancy code here>
...
ENDSELECT.
但是,此选择始终会将1
的值lv_rmzhl
和20140826
的{{1}}赋予我权限,因此无法获得lv_iedd
值,例如I&# 39;我试图得到。我理解他可以通过将所有内容放入内部表并在MAX
字段上排序来轻松完成,但我正在寻找更合适的方法。
答案 0 :(得分:6)
您可以执行以下子选择:
SELECT SINGLE iedd
FROM afru
INTO @DATA(lv_iedd)
WHERE rueck = '0000030116'
AND rmzhl = ( SELECT MAX( rmzhl ) FROM afru WHERE rueck = '0000030116' ).
即使与FOR ALL ENTRIES
结合使用,我也会在很多情况下使用它,性能差异非常小。