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

如何在SQL结果集中跳过重复值?Oracle ORA-00923报错排查

问题分析与SQL修正

错误原因

你的SQL触发ORA-00923: FROM keyword not found where expected错误,核心问题如下:

  • 子查询结构混乱:将两个分组查询R和D直接拼接在FROM后,同时在同一子查询中混合查询两个表字段并计算行号,导致Oracle无法正确解析FROM子句结构。
  • 使用保留关键字做别名:date是Oracle保留关键字,不能用作字段别名。
  • 行号别名命名冲突:ROW_NUMBER是窗口函数名称,用作别名易引发语法解析混淆。

修正后的SQL

SELECT formatted_loaded_date,
       stores,
       total_records_loaded
FROM   (SELECT To_char(Trunc(loaded_date), 'YYYY-MM-DD') AS formatted_loaded_date,
               Count(storenumber) AS stores,
               Sum(records_loaded) AS total_records_loaded,
               Row_number() OVER (PARTITION BY Sum(records_loaded), Count(storenumber) 
                                  ORDER BY Trunc(loaded_date) DESC) AS rn
        FROM   $a$
        GROUP  BY Trunc(loaded_date))
WHERE  rn = 1
ORDER  BY formatted_loaded_date DESC;

逻辑说明

  1. 合并分组计算:从原表$a$按加载日期(截断到天)分组,一次性计算每日的加载记录总数和门店数量,避免多次子查询连接,提升执行效率。
  2. 窗口函数去重:通过ROW_NUMBER()按total_records_loaded和stores的组合分区(仅当两个值同时重复时判定为需要去重的重复结果),按日期倒序排序,每个重复组合中最新的日期会被标记为rn=1。
  3. 筛选有效记录:外层查询只保留rn=1的记录,自动跳过重复的旧日期统计结果,匹配你跳过重复值的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:15:48