1
フラグのような列に応じてDBテーブルから1行だけを選択するソリューションを探しています。 C1とC2はキーフィールドであるABAPの列の値に応じてDBテーブルから1行のみを選択するOpen SQL
C1 | C2 | C3
-----------------
A1 | N1 |
A1 | N2 | X
A1 | N3 |
A2 | N21 | X
A2 | N22 |
:
サンプルDBテーブルはこのようになります。この例では、A1は3つのエントリを持ち、そのうちの1つは真( 'X')のフラグを持っています。
フラグ= 'X'のエントリまたはC2値の最小値のいずれかを選択します。
これはABAP Open SQLで可能ですか?私はcase文を使ってみましたが、必要な結果を得られませんでした。
EDIT 1:上記の例で
:結果は
A1になります| N2
A2 | N21
フラグが偽または空の場合:
A1 | N1
A2 | N21
こんにちはジャガー、ありがとう。しかし、この場合、OR条件であるため、フラグ= 'X'の2つの行と最小値の1つの2つの行を返します。私が本当に欲しいのは、最後の行です。また、私はABAPコードでこれを行うことができますが、ABAPコードを理解できないCDSビューのクエリを使用したいと思います。 – qwerty
答えの最初のバージョンはそうでしたが、1時間前に変更しました。現在、/またはどちらかを返します。私はCDSのビューをあまり知らないのですが、私がそれをGoogle検索したとき、それはABAP CDSと一緒に来たので、そこでABAPを使用することは可能だと思います。 – Jagger
@ Jagger-はい、フラグがtrueに設定されているとうまく動作します。しかし、すべてのエントリに対してフラグをfalseに設定した場合、min値を持つエントリが1つだけ選択されます。フラグが空である場合に必要なのは、C1(キーフィールド)に属するすべてのエントリがmin(C2)を持つことです。グループを追加しようとしましたが、私の原因を助けません。何か案は? – qwerty