ORA-00904: 分组子句后的标识符无效

Posted

技术标签:

【中文标题】ORA-00904: 分组子句后的标识符无效【英文标题】:ORA-00904 : invalid identifier after grouping clause 【发布时间】:2016-02-02 14:10:28 【问题描述】:

我正在尝试运行这个选择命令:

select
    r.id,
    r.trip_reason,
    r.status, 
    to_char(trunc(r.trip_date),'DD/MM/YYYY') AS trip_date,
    c.country, count(a.request_id)           AS AZ_Travelers,
    t.travel_by, 
    tt.type,
    r.trip_city,
    r.nr_non_az,
    initcap(e.first_name || ' ' || e.last_name) AS requestor,
    r.requestor_id

 from et_request r, et_country c, et_travel_by t,
      et_trip_type tt, hr_dwh.pm_employees e, et_approval a     

where nvl(r.archived,0)<>1
  and trunc(r.trip_date) >= trunc(sysdate)
  and r.requestor_id = e.empl_id
  and r.id = a.request_id
  and r.trip_country_code = c.id
  and r.travel_by_id = t.id
  and r.trip_type_id = tt.id

group by r.id, r.trip_reason, r.status, trip_date, c.country, AZ_Travelers,
         t.travel_by, tt.type, r.trip_city, r.nr_non_az, requestor, r.requestor_id
order by r.trip_date;

但是,我收到以下错误:

ORA-00904: "REQUESTOR": invalid identifier

我已经注意使用 group by 子句中的每个表字段,但我收到了这个错误。有什么线索吗?

【问题讨论】:

我猜你不能按计算字段分组?也许用e.first_name, e.last_name替换它? 你能把它写成答案吗?这是解决方案,谢谢! 【参考方案1】:

数据库没有名为requestor 的列——此时,它只是一个标签,你告诉它给结果集中的某些东西——它还没有生成,所以没有'不知道当它在查询中遇到该名称时如何处理。

您可以按该计算列的组件进行分组,例如将 GROUP BY 语句中的 requestor 替换为 e.first_name, e.last_name

【讨论】:

感谢您的帮助!

以上是关于ORA-00904: 分组子句后的标识符无效的主要内容,如果未能解决你的问题,请参考以下文章

PL-SQL:ORA-00904 - 标识符无效 - Select and Pivot 子句中的列

SQL 错误:ORA-00904:“GENDER”:无效标识符 00904。00000 -“%s:无效标识符”

错误报告:SQL 错误:ORA-00904::无效标识符 00904。00000 - “%s:无效标识符”

ORA-00904: 无效标识符 00904. 00000 - "%s: 无效标识符"

为啥我会收到:[Oracle][ODBC][Ora]ORA-00904:标识符无效

ORA-00904 无效标识符错误