サブクエリが変数と一致するテーブルから行を取得しようとしています。ただし、WHERE 句では、選択したテーブルのフィールドを定数、変数、またはサブクエリと比較することしかできないようです。
私は次のようなものを書くことを期待しています:
DATA(lv_expected_lines) = 5.
SELECT partner contract_account
INTO TABLE lt_bp_ca
FROM table1 AS tab1
WHERE lv_expected_lines = (
SELECT COUNT(*)
FROM table2
WHERE partner = tab1~partner
AND contract_account = tab1~contract_account ).
しかし、明らかに、この選択はローカル変数をフィールド名として扱い、「ランタイムまで不明な列名「lv_expected_lines」、フィールドリストを指定できません」というエラーが表示されます。
しかし、標準 SQL では、これは完全に可能です。
SELECT PARTNER, CONTRACT_ACCOUNT
FROM TABLE1 AS TAB1
WHERE 5 = (
SELECT COUNT(*)
FROM TABLE2
WHERE PARTNER = TAB1.PARTNER
AND CONTRACT_ACCOUNT = TAB1.CONTRACT_ACCOUNT );
では、RSQL / Open SQL でこのロジックを複製するにはどうすればよいでしょうか?
仕方がない場合は、おそらくネイティブ SQL を作成するだけで済みます。