You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CASE表达式查询时Oracle SQL报FROM关键字错误排查

问题分析与修正

错误原因

  1. 关键字冲突:IN是Oracle的保留关键字,直接用它作为列别名AS in会触发语法解析错误,这是ORA-00923报错的直接原因。
  2. 分组逻辑错误:GROUP BY子句包含了cf.NOM_CF,会让结果按「月份+NOM_CF」分组,最终每个月份会生成两行数据(分别对应COST和ENTRY),和你预期的一行展示当月IN、OUT统计结果不符。

修正后的SQL语句

SELECT de.MONTH,
       SUM(CASE WHEN cf.NOM_CF = 'ENTRY' THEN de.MB END) AS "IN",
       SUM(CASE WHEN cf.NOM_CF = 'COST' THEN de.MB END) AS "OUT"
FROM DETALLE_ARCHIVO_IOT de
INNER JOIN ARCHIVO_IOT cab ON cab.ID_ARCHIVO_IOT = de.ID_ARCHIVO_IOT
INNER JOIN PLMN p ON p.CODE_PLMN = de.code
INNER JOIN CF cf ON cf.ID_CF = de.ID_CF
WHERE de.MONTH BETWEEN '202101' AND '202104' 
  AND de.CALL_TYPE = 'GPRS' 
  AND cab.ESTADO_DETALLE = 1
GROUP BY de.MONTH
ORDER BY de.MONTH;

说明

  • 用双引号包裹"IN"和"OUT"别名,规避Oracle保留关键字冲突;
  • 移除GROUP BY中的cf.NOM_CF,确保每个月份仅生成一行统计结果,CASE表达式会自动对符合条件的记录求和并合并到对应列中。

内容的提问来源于stack exchange,提问作者mohamed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:01:11