【发布时间】:2011-09-02 08:59:54
【问题描述】:
我在 Oracle Express 中使用了 HR 员工模式,我想选择在特定年份聘用的员工。
SELECT hire_date,
COUNT(*)
FROM employees empl
GROUP BY SUBSTR(hire_date, -4)
ORDER BY empl.hire_date;
hire_date 列的格式为“2011 年 1 月 1 日”,所以我想将它们分组 通过提取最后四个字符。
问题是,我遇到以下错误
ORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
*Cause:
*Action:
Error at Line: 1 Column: 7
这不可能吗?
【问题讨论】:
-
hire_date 列是日期还是字符类型? 'describe employees' 的输出会告诉你这一点。
-
为什么在
date列上使用substr()? substr() 用于 varchar 列。如果您需要获取日期的一部分,则应改用to_char()(或提取)。您依赖于隐式数据转换,如果更改语言环境设置,该转换势必会中断。 -
@a_horse_with_no_name 谢谢。这是我第一次使用 Oracle DB,但我已将其放入我的 TODO 列表中。感谢您的意见.. =)
标签: sql oracle aggregate-functions ora-00979