使用 GROUP BY 时 Oracle 查询层次结构级别

Oracle Query hierarchical level cintaining when case with GROUP BY

我无法解决包含 CASE...WHEN 的查询中的 GROUP BY 问题

你能帮我解决一下吗?

select  ID,
        CODE, 
        NOM AS TITLE,
        level,
        ID_PARENT,
        CASE ID_PARENT
            WHEN 1111 THEN 'MAIN'
            ELSE 
            (
                SUBSTR(
                (
                SELECT CODE FROM units o
                INNER JOIN LIB_UNITS_MV oLab on oLab.ID = o.ID WHERE o.ID = units.ID_PARENT AND LNG_CD = 'ENG'
                )        
                , 7)      
            )
        END AS "PARENT_CODE"         
from units
INNER JOIN LIB_UNITS_MV orgLab on orgLab.ID = units.ID
WHERE orgLab.LNG ='ENG' 
start with units.id = 1111
connect by prior u.ID = u.ID_PARENT
GROUP BY ID, CODE, NOM, level, ID_PARENT

我收到错误 "not a GROUP BY expression" 因为我有 WHEN...CASE

提前感谢您的帮助

此致

因为当您 group by 您需要按足够数量的列进行分组,您在 select 语句中使用这些列,在聚合函数之外(minmaxsum 等)。因此,在您的情况下,这意味着 - 您可以按 case 语句中使用的所有列进行分组,或者按整个 case 语句进行分组(只需将其复制到 group by),或者整体case的任何一组子组合,完全覆盖它。但是 - 由于您没有使用任何聚合函数,我只会做 distinct 并完全删除 group by