1

这是我希望从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.

但是,此选择始终使我获得 和 的值1lv_rmzhl因此20140826无法lv_iedd获得MAX我想要获得的值。我知道他可以通过将所有内容放入内部表格并在RMZHL现场进行排序来轻松完成,但我正在寻找更合适的方法。

4

1 回答 1

8

你可以做一个子选择,如:

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它,性能差异非常低。

于 2016-11-04T17:53:03.097 回答