2011-09-17 53 views
0

我创建了一个看起来像这样的查询,但我还没有找到将部门分组在一起的方法。那是我需要帮助的部分。我想在一个柱子里找到部门编号,员工是另一个,然后是另一个人的同事。任何帮助都会很棒。获取正确的数据时出现问题

这是我希望它看起来像

DEPARTMENT EMPLOYEE COLLEAGUE 
    10   CLARK   KING 
    10   CLARK   MILLER 
    10   KING   CLARK 
    10   KING   MILLER 
    10   MILLER  CLARK 
    10   MILLER  KING 
    20   ADAMS   FORD 
    20   ADAMS   JONES 
    20   ADAMS   SCOTT 
    20   ADAMS   SMITH 

这里是我走到这一步,但不是correct.Kings同事不是国王的克拉克和米勒。克拉克斯的同事不是克拉克的国王和米勒。

SQL> select ename AS Employee, deptno AS Department, ename AS Colleague from emp order by deptno asc; 

    EMPLOYEE DEPARTMENT COLLEAGUE 
    ---------- ---------- ---------- 
    KING    10 KING 
    CLARK    10 CLARK 
    MILLER    10 MILLER 
    ADAMS    20 ADAMS 
    SCOTT    20 SCOTT 
    SMITH    20 SMITH 
    FORD    20 FORD 
    JONES    20 JONES 
    WARD    30 WARD 
    JAMES    30 JAMES 
    ALLEN    30 ALLEN 

    EMPLOYEE DEPARTMENT COLLEAGUE 
    ---------- ---------- ---------- 
    MARTIN    30 MARTIN 
    BLAKE    30 BLAKE 
    TURNER    30 TURNER 

14 rows selected. 

继承人的dept表

SQL> select * from dept; 

DEPTNO DNAME   LOC 
---------- -------------- ------------- 
    10 ACCOUNTING  NEW YORK 
    20 RESEARCH  DALLAS 
    30 SALES   CHICAGO 
    40 OPERATIONS  BOSTON 

继承人的表emp

SQL> select ename, deptno, job from emp; 

ENAME   DEPTNO JOB 
---------- ---------- --------- 
KING    10 PRESIDENT 
BLAKE    30 MANAGER 
CLARK    10 MANAGER 
JONES    20 MANAGER 
MARTIN    30 SALESMAN 
ALLEN    30 SALESMAN 
TURNER    30 SALESMAN 
JAMES    30 CLERK 
WARD    30 SALESMAN 
FORD    20 ANALYST 
SMITH    20 CLERK 

ENAME   DEPTNO JOB 
---------- ---------- --------- 
SCOTT    20 ANALYST 
ADAMS    20 CLERK 
MILLER    10 CLERK 

14 rows selected. 

回答

2

这听起来像你想要的东西像

SQL> ed 
Wrote file afiedt.buf 

    1 select deptno department, 
    2   e1.ename employee, 
    3   e2.ename colleague 
    4 from emp e1 join emp e2 using (deptno) 
    5 where e1.empno != e2.empno 
    6* order by deptno 
SQL>/

DEPARTMENT EMPLOYEE COLLEAGUE 
---------- ---------- ---------- 
     10 MILLER  CLARK 
     10 KING  CLARK 
     10 MILLER  KING 
     10 CLARK  MILLER 
     10 KING  MILLER 
     10 CLARK  KING 
<<additional results removed>> 
+0

谢谢你这正是我要找的。 – user770022

0
Select distinct d.dname, t1.employee, t2.employee college 
From emp t1 
inner join dept d on d.deptno = t1.deptno 
Inner join emp t2 on t2.deptno = t1.deptno and t1.employee <> t2.employee 
+0

SQL>选择不同的d.dname,t1.employee,t2.employee作为college从emp t1内部加入部门t1。 deptno = d.deptno在t2.deptno = d.deptno上的内部连接emp t2; 选择不同的d.dname,t1.employee,t2.employee作为college从emp t1 t1.deptn上的内部连接部分 o = d.deptno t2.deptno上的内部连接emp t2 = d.deptno * ERROR at第1行: ORA-00904:“T2”。“EMPLOYEE”:无效标识符 SQL> – user770022

相关问题