【问题标题】:ORA-00904 : invalid identifier in nested queryORA-00904: 嵌套查询中的标识符无效
【发布时间】:2022-09-30 22:08:51
【问题描述】:

我是 oracle sql 的新手,我想使用这个简单的嵌套查询来计算具有最高 er_val 值的 er_cli(er_val 不是数字)但是当我尝试执行它时它显示 \"ORA-00904:\"MAX_VAL \“:不合法的识别符\”。我查看了一些示例,但没有任何帮助。

 select er_cli,max(max_val)
  from (select er_cli,count(er_val)
        from f_entrel
        group by er_cli) max_val
  group by er_cli;
  • max_val 在这里定义为表别名,但您将其用作列别名。
  • 如果 er_val 不是数字,那么“最高”的定义是什么?

标签: sql oracle


【解决方案1】:

正如 jarlh 的评论所说,您使用 max_value 作为表别名,但随后您使用 COUNT 就可以了,下面是您的参考

 select m.er_cli,max(m.cnt)
  from (select er_cli,count(er_val) as cnt
        from f_entrel
        group by er_cli) m
  group by m.er_cli;

更新:

如果你想用er_cli得到最大值,你可以用order bylimit来做

SELECT m.er_cli,m.cnt
   FROM
   (
    SELECT er_cli,count(er_val) AS cnt,rownumber
            FROM f_entrel
            GROUP BY er_cli
    ORDER BY cnt DESC
   ) m
   WHERE m.rownumber=1

【讨论】:

  • 你比我快。我相信(缺少列名)是问题所在。
  • 那行得通,但我只想要具有最高 er_val 的 er_cli。当我执行此代码时,它会向我显示每个 er_cli。我试图删除 group by 语句,但 oracle 显示 ORA-00937: not a single-group group function
  • @ВалентинД.,将一些示例表数据和预期结果添加到您的问题中,全部作为格式化文本(没有图像,没有链接。)
  • A600469EA60043XX 1169 425 A6004FHM 1033 59 A600466N 670 571 A6004RXF 403
猜你喜欢
  • 2023-01-12
  • 2014-03-02
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 2011-04-21
  • 1970-01-01
相关资源
最近更新 更多