我如何能够从两个表中显示如下所示的数据

时间:2013-03-16 10:08:15

标签: sql database oracle10g

我想显示来自两个表,员工和部门的数据。它必须显示部门明细,然后显示与该部门相关的所有员工。这就是我想要显示的方式:

    DEPTNO DNAME            LOC           
---------- -------------- ------------- 
        10 ACCOUNTING     NEW YORK      
     EMPNO ENAME
---------- ----------
      7782 CLARK
      7839 KING
      7934 MILLER


        20 RESEARCH       DALLAS        
     EMPNO ENAME
---------- ----------
      7369 SMITH
      7566 JONES
      7788 SCOTT
      7876 ADAMS
      7902 FORD


        30 SALES          CHICAGO       
     EMPNO ENAME
---------- ----------
      7499 ALLEN
      7521 WARD
      7654 MARTIN
      7698 BLAKE
      7844 TURNER
      7900 JAMES

附录

SQL> select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30
      7566 JONES      MANAGER         7839 02-APR-81       2975                    20
      7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30
      7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30
      7782 CLARK      MANAGER         7839 09-JUN-81       2450                    10
      7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20
      7839 KING       PRESIDENT            17-NOV-81       5000                    10
      7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30
      7876 ADAMS      CLERK           7788 23-MAY-87       1100                    20

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7900 JAMES      CLERK           7698 03-DEC-81        950                    30
      7902 FORD       ANALYST         7566 03-DEC-81       3000                    20
      7934 MILLER     CLERK           7782 23-JAN-82       1300                    10

1 个答案:

答案 0 :(得分:1)

SQL旨在检索基于集合的原始数据,而不是以这种格式呈现。您可以做的最好的事情是按正确的顺序获取数据 -

SELECT
  DEPTNO,
  DEPT.LOC,
  EMPNO,
  ENAME
FROM EMP INNER JOIN DEPT
  ON EMP.DEPTNO=DEPT.KEY-FIELD
ORDER BY 1,3

..然后使用一些报告工具将其分解为几个部分。

(我希望这是虚拟测试数据,而不是真正的工资信息:)。