問題を単純化していますが、ここでの概念は同じである必要があります...
FOO
フィールドID
とATTRIB
、を持つテーブルBAR
と、フィールドID
、、、A_MATCHING_ID
を持つテーブルがあるとしましょうSTATUS
。これらのテーブルは次のようになります。
テーブルFOO:
ID - ATTRIB
=====
1001 - ATR_A
1002 - ATR_B
1003 - ATR_A
1004 - ATR_B
1005 - ATR_B
etc.
テーブルバー:
ID - FOO_MATCHING_ID - STATUS
=====
9901 - 1001 - STAT_A
9902 - 1001 - STAT_A
9903 - 1001 - STAT_B
9904 - 1002 - STAT_C
9905 - 1002 - STAT_B
9906 - 1002 - STAT_B
9907 - 1003 - STAT_A
etc.
toの1対多の関係がありFOO
ますBAR
。
計算/依存フィールド[HAS_STAT_A]を使用して、これら2つのテーブルに対してクエリを実行したいと思います。
予想されるクエリ結果:
FOO_ID - HAS_STAT_A
=====
1001 - TRUE
1002 - FALSE
1003 - TRUE
どうすればこれを達成できますか?
SELECT FOO.ID AS FOO_ID, [FILL THIS IN] AS HAS_STAT_A
FROM FOO
JOIN BAR ON FOO.ID = BAR.FOO_MATCHING_ID;
を使用することを考えCASE
ましたが、複数のレコードで使用する方法がわかりません。また、いくつかのサブクエリを追加することも考えましたが、それらをどのように配置するかもわかりませんでした。
これは似ていますが、私が達成したいことではありません。以下のような結果になりましたが、GROUP BY
エラーが発生します。を追加するGROUP BY
と、MISSING KEYWORD
エラーが発生します。
SELECT FOO.ID AS FOO_ID,
INSTR (LISTAGG (BAR.STATUS, ',') WITHIN GROUP (ORDER BY BAR.STATUS), 'STAT_A') AS HAS_STAT_A
FROM FOO
JOIN BAR ON FOO.ID = BAR.FOO_MATCHING_ID;