我正在做一个报告,说每个组都有雇员,我需要为每个部门中的每个雇员得到一个行号
select rownum,e.empno, e.ename, e.sal, e.comm, e.deptno, d.dname
from emp e
left join dept d on emp.deptno = dept.deptno
order by deptno;
答案 0 :(得分:1)
我们可以在此处尝试使用ROW_NUMBER
SELECT
ROW_NUMBER() OVER (PARTITION BY emp.deptno ORDER BY emp.ename) rn,
emp.empno,
emp.ENAME,
emp.SAL,
emp.COMM,
emp.DEPTNO,
dept.dname
FROM emp
LEFT JOIN dept
ON emp.deptno = dept.deptno
ORDER BY
emp.deptno;
请注意,您从未提供逻辑来决定部门中每个员工的顺序。在没有此名称的情况下,我使用了员工姓名。如果需要其他排序,只需修改对ORDER BY
的调用中的ROW_NUMBER
子句。