2

特定の列の最大値を持つ (部分) キーによってテーブルから行を選択することは、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 開発におけるこの一般的なプログラミング要件のベスト プラクティスは何ですか?

4

3 に答える 3

0

あなたの質問の下に私の答えを見つけてください。

  • 次の構文では、サブクエリでの結合はサポートされていません。SELECT * FROM X as x INNER JOIN ( SELECT ... ) AS y

    サブクエリを where 条件に入れるとうまくいくはずですSELECT * FROM X AS x INNER JOIN Y AS y ON x~a = y~b WHERE ( SELECT * FROM y WHERE ... )

  • 私の知る限り、複合キーに IN を使用する構文はサポートされていません。SELECT * FROM X WHERE (key1, key2) IN ( SELECT key1 key2 FROM ... )

    WHERE 句を分割する必要があります。SELECT * FROM X WHERE key1 IN ( SELECT key1 FROM y ) AND key2 IN ( SELECT key2 FROM y )

  • 小なり比較によるそれ自体への左結合はサポートされていません。外部結合は EQ 比較のみをサポートします。

    はい、現時点ではそうです。

于 2014-08-21T09:44:40.187 に答える