在多个相关字段上选择 MAX
Selecting MAX over multiple dependent fields
这是我希望 select 来自 AFRU
table 的数据示例。
+----------------------+-----------------+-------------------------+
| Confirmation (RUECK) | Counter (RMZHL) | Finish Execution (IEDD) |
+----------------------+-----------------+-------------------------+
| 30116 | 1 | 08/26/2014 |
| 30116 | 2 | 08/27/2014 |
| 30116 | 3 | 09/27/2013 |
+----------------------+-----------------+-------------------------+
鉴于此数据集,我想要 select 最后一行,因为它包含最高 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.
然而,这个 selection 总是让我得到 lv_rmzhl
的值 1
,lv_iedd
的 20140826
,因此没有得到 MAX
就像我试图获得的价值。我知道他可以通过将其全部放入内部 table 并在 RMZHL
字段上排序来轻松完成,但我正在寻找更合适的方法。
您可以像这样进行子选择:
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
结合使用,性能差异非常小。
这是我希望 select 来自 AFRU
table 的数据示例。
+----------------------+-----------------+-------------------------+
| Confirmation (RUECK) | Counter (RMZHL) | Finish Execution (IEDD) |
+----------------------+-----------------+-------------------------+
| 30116 | 1 | 08/26/2014 |
| 30116 | 2 | 08/27/2014 |
| 30116 | 3 | 09/27/2013 |
+----------------------+-----------------+-------------------------+
鉴于此数据集,我想要 select 最后一行,因为它包含最高 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.
然而,这个 selection 总是让我得到 lv_rmzhl
的值 1
,lv_iedd
的 20140826
,因此没有得到 MAX
就像我试图获得的价值。我知道他可以通过将其全部放入内部 table 并在 RMZHL
字段上排序来轻松完成,但我正在寻找更合适的方法。
您可以像这样进行子选择:
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
结合使用,性能差异非常小。