- OR 조건을 UNION ALL로 변경 시에 중복 값을 제거 하기 





* OR 조건을 UNION ALL로 변경 시에 중복 값을 제거(LNNVL 함수 사용)


SELECT /*+ QB_NAME(MAIN) USE_CONCAT   */

            e.empno , e.ename , d.dname

     FROM   emp e , dept d

     WHERE  e.deptno = d.deptno

     AND    (d.deptno IN (10,20) OR e.mgr IN ( 7839  , 7698 )) ;


     ==>


     SELECT /*+ QB_NAME(MAIN1) */

            e.empno , e.ename , d.dname

     FROM   emp e , dept d

     WHERE  e.deptno = d.deptno

     AND    e.mgr IN ( 7839  , 7698 )

     UNION ALL

     SELECT /*+ QB_NAME(MAIN2) */

            e.empno , e.ename , d.dname

     FROM   emp e , dept d

     WHERE  e.deptno = d.deptno

     AND    d.deptno IN (10,20)

     AND    (lnnvl(e.mgr = 7839) AND lnnvl(e.mgr = 7698 )) ;  





'ORACLE > SQL' 카테고리의 다른 글

BULK COLLECT  (0) 2017.08.17
오라클 정규식 사용 팁  (0) 2017.07.07
DML 수행 시 내부 절차  (0) 2017.06.20
관리를 위한 쿼리 모음  (0) 2017.06.16
Oracle 스크립트 모음  (0) 2017.06.16

+ Recent posts