如何获得报告中每个组的行号?

时间:2019-04-10 10:44:15

标签: oracle oracle11g oraclereports

我正在做一个报告,说每个组都有雇员,我需要为每个部门中的每个雇员得到一个行号

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;

1 个答案:

答案 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子句。