特定の列の最大値を持つ (部分) キーによってテーブルから行を選択することは、SQL の一般的なタスクです。この質問には、さまざまなアプローチをカバーする優れた回答がいくつかあります。残念ながら、ABAP プログラムでこれを複製するのに苦労しています。
一般的に使用されるアプローチはどれもサポートされていないようです。
- サブクエリでの結合は、次の構文ではサポートされていません:
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 がそれらをサポートしていないようであり、同等のものを見つけることができなかったことを発見した後、サブクエリのデータをイタブ。
ABAP 開発におけるこの一般的なプログラミング要件のベスト プラクティスは何ですか?