【发布时间】:2014-05-09 09:21:18
【问题描述】:
通过(部分)键从表中选择特定列中具有最大值的行是 SQL 中的常见任务。 This question 有一些很好的答案,涵盖了各种方法。不幸的是,我正在努力在我的 ABAP 程序中复制这一点。
似乎不支持常用的方法:
- 加入子查询是not supported in syntax:
SELECT * FROM X as x INNER JOIN ( SELECT ... ) AS y - 据我所知,语法不支持将 IN 用于复合键:
SELECT * FROM X WHERE (key1, key2) IN ( SELECT key1 key2 FROM ... ) - 不支持使用小于比较的左连接自身,外连接仅支持 EQ 比较:
SELECT * FROM X AS x LEFT JOIN X as xmax ON x-key1 = xmax-key1 AND x-key2 < xmax-key2 WHERE xmax-key IS INITIAL
在依次尝试了这些解决方案中的每一个之后,却发现 ABAP 似乎不支持它们并且无法找到任何等价物,我开始认为我别无选择,只能转储itab 的子查询。
在 ABAP 开发中这种常见的编程要求的最佳实践是什么?
【问题讨论】:
-
您有可以使用的密钥第一部分的参考表吗?
-
@vwegert 你的意思是我应该将复合键封装在一个结构中吗?我只见过被称为用于澄清价值列上的货币的参考表。
标签: greatest-n-per-group abap opensql