我将尝试在分层表格中检测重复值。
考虑以下(有点牵强的)示例:
我希望每一行都能按照子查询中它的存在次数返回(忽略顺序)。由于START WITH使用了IN子句,重复的值被压制了。是否可以重新组织SQL以便我可以做到这一点?
请注意,在我的情况下,子句不是UNION,而是SELECT,可能会从表中返回多个(可能重复的)值。
如果可能的话,我更喜欢仅在SQL中完成,虽然我可以通过将值写入临时表中并进行GROUP + COUNT来完成PL/SQL。
如果需要任何澄清,请告诉我。
谢谢 :-)
编辑:
请注意,子查询可能返回0...N个值。
考虑以下(有点牵强的)示例:
SELECT *
FROM emp
START WITH mgr IN (SELECT empno FROM emp WHERE ename = 'JONES'
UNION ALL
SELECT empno FROM emp WHERE ename = 'JONES')
CONNECT BY PRIOR empno = mgr;
Returns...
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7369 SMITH CLERK 7902 17-DEC-80 800 20
我需要的是...
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7369 SMITH CLERK 7902 17-DEC-80 800 20
7369 SMITH CLERK 7902 17-DEC-80 800 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
我希望每一行都能按照子查询中它的存在次数返回(忽略顺序)。由于START WITH使用了IN子句,重复的值被压制了。是否可以重新组织SQL以便我可以做到这一点?
请注意,在我的情况下,子句不是UNION,而是SELECT,可能会从表中返回多个(可能重复的)值。
如果可能的话,我更喜欢仅在SQL中完成,虽然我可以通过将值写入临时表中并进行GROUP + COUNT来完成PL/SQL。
如果需要任何澄清,请告诉我。
谢谢 :-)
编辑:
请注意,子查询可能返回0...N个值。