sql - 使用 GROUP BY 时的 Oracle Query 层次级别
问题描述
我无法解决包含 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
我收到错误“不是 GROUP BY 表达式”,因为我有 WHEN...CASE
预先感谢您的帮助
问候
解决方案
因为当您group by
需要按在select
语句中使用的足够数量的列进行分组时,在聚合函数(min
,max
等sum
)之外。因此,在您的情况下,这意味着-您可以按case
语句中使用的所有列分组,也可以按整个case
语句分组(只需将其复制到您的group by
),或整体的任何子组合case
,完全覆盖它。但是 - 因为你没有使用任何聚合函数,所以我会完全distinct
放弃group by
。
推荐阅读
- mysql - 试图通过 mySQL 数据库将数据输入到我的 .NET 程序中
- javascript - JS .animate 在执行完成后将元素重置为原始位置
- jmeter - Jmeter在线程中发现错误时如何停止所有线程的执行
- asp.net-core - 当用户有 2 个角色时,AuthorizeView 不起作用
- javascript - 值未推送到 javascript 中的全局数组中
- ignite - 点燃内核状态总是显示停止
- flutter - Flutter sqflite 不适用于真实设备 android
- windows - 环境变量扩展不再适用于 Windows 上的 npm run
- php - PHP8将0与空字符串进行比较,其背后的逻辑是什么
- jenkins - 构建触发器不会保存在 Jenkins 中