select e.ename 姓名
-- ,months_between(sysdate, e.hiredate) 工作时长(月)
from emp e
where months_between(sysdate, hiredate) =
(select max(months_between(sysdate, hiredate))
from emp e, dept d
where e.deptno = d.deptno
and e.deptno = (select d.deptno
from emp e, dept d
where e.deptno = d.deptno
and e.ename = 'KING'))
为什么我不注释掉第二行,程序就报错呢,说是from后面没有where语句,在线等啊
-- ,months_between(sysdate, e.hiredate) 工作时长(月)
from emp e
where months_between(sysdate, hiredate) =
(select max(months_between(sysdate, hiredate))
from emp e, dept d
where e.deptno = d.deptno
and e.deptno = (select d.deptno
from emp e, dept d
where e.deptno = d.deptno
and e.ename = 'KING'))
为什么我不注释掉第二行,程序就报错呢,说是from后面没有where语句,在线等啊
,months_between(sysdate, e.hiredate) "工作时长(月)"
--要用双引号把列名引起来,这样就不会出错了,不过你的语句也有问题吧
select emp.ename,emp.hiredate,emp.deptno
,trunc(months_between(sysdate,emp.hiredate)) "工作时长(月)"
from emp,(select min(deptno) deptno,max(hiredate) hiredate from emp
where deptno=(select deptno from emp where upper(ename)='KING'))t
where emp.deptno=t.deptno and emp.hiredate=t.hiredate;