Создание иерархического уровня Oracle Query при использовании GROUP BY - PullRequest
0 голосов
/ 04 октября 2019

Я не могу решить проблему с моей проблемой GROUP BY в моем запросе, содержащем CASE ... КОГДА

Не могли бы вы мне помочь с этим?

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

Я получаю ошибку "не выражение GROUP BY ", потому что у меня есть КОГДА ... ДЕЛО

Заранее благодарю за помощь

С уважением

1 Ответ

0 голосов
/ 04 октября 2019

Поскольку вы group by должны группировать по достаточному количеству столбцов, которое вы используете в выражении select, вне функций агрегирования (min, max, sum и т. Д.). Таким образом, в вашем случае это означает - вы можете сгруппировать по всем столбцам, использованным в вашем операторе case, или сгруппировать по целому оператору case (просто скопируйте его в group by), или любой набор суб-комбинацийвсего case, полностью покрывая это. Однако - поскольку вы не используете никаких агрегатных функций, я бы просто сделал distinct и вообще отбросил group by.

...