我正在简化问题,但这里的概念应该是相同的......
假设我们有一个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.
FOO
to是一对多的关系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;