一个sql语句报错ORA-00904: "入职天数": 标识符无效 不清楚为什么

2024-11-13 04:44:07
推荐回答(3个)
回答(1):

这个是where条件里的"入职天数"还没有定义的缘故。
主要是因为 sql中的执行顺序决定的。
你想啊,where本来就是要过滤查询结果的,是要先执行的,根本就还没有读到 select中对于别名的定义。当然会出错。
而order by中使用别名是可以的,也是因为查询结果已经过滤出来。

可以把where条件中使用别名的地方,换成最初的表达式。比如 where trunc(sysdate-hiredate)>=10000
希望可以帮到你。

回答(2):

where 语句后面,"入职天数"是一个别名,不能用在这里。
select * from
( select ename,sal,trunc(sysdate-hiredate) as "入职天数" from scott.emp where sal<=1200 ) a where "入职天数">=10000 order by sal,"入职天数";

回答(3):

"入职天数"改成trunc(sysdate-hiredate)
select ename,sal,trunc(sysdate-hiredate) as "入职天数" from scott.emp
where trunc(sysdate-hiredate)>=10000 and sal<=1200 order by sal,"入职天数";