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