我正在简化问题,但这里的概念应该是相同的......
假设我们有一个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.
FOOto是一对多的关系BAR。
我想使用计算/依赖字段 [HAS_STAT_A] 对这两个表运行查询:
预期的查询结果:
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;