database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39253 게시물 읽기
No. 39253
고수님들 쿼리좀 봐주세요..
작성자
오라초
작성일
2012-01-26 16:05
조회수
3,808

이력쿼리문인데..제가 봐도봐도 제자리만 맴돌고 있습니다..도통 어찌해야할지 모르겠습니다..ㅜㅡㅜ..

결과는 나름나오는데 쿼리길고 행(?)걸린다고 연락왔습니다.. 도와주세요..

WITH CODE_TABLE AS
(
SELECT '01' code, 'a' code_name, 'A' stat FROM DUAL
UNION ALL SELECT '02', 'b', 'A' stat FROM DUAL
)
, CODE_TABLE1 AS
(
SELECT '01' code, 'prdt1' code_name, 'A' stat FROM DUAL
UNION ALL SELECT '02', 'prdt2', 'A' stat FROM DUAL
UNION ALL SELECT '03', 'prdt3', 'A' stat FROM DUAL
)
, MASTER_TABLE AS
(
SELECT 1 a_no, 1 a_nod, '01' mcode1,'01' mcode2,'01' mcode3,'01' mcode4,'01' mcode5, '111' jumin, 'hong1' name1, 'admin' name2, 'test' file_name FROM DUAL
UNION ALL SELECT 1, 2, '02' mcode1,'02' mcode2,'02' mcode3,'02' mcode4,'02' mcode5, '222', 'hong2', 'admin2' , 'null' FROM DUAL
)
, DETAIL_TABLE AS
(
SELECT 1 a_no, 1 a_nod, 1 a_sn, '01' code, '1' desc1, 10 wt, 10 money, 10 qt  FROM DUAL
UNION ALL SELECT 1, 1, 2, '02', '2', 20, 20, 20 FROM DUAL
UNION ALL SELECT 1, 1, 3, '02', '3', 30, 30, 30 FROM DUAL
UNION ALL SELECT 1, 1, 4, '03', '4', 40, 40, 40 FROM DUAL
UNION ALL SELECT 1, 2, 1, '01', '1', 10, 10, 10 FROM DUAL
UNION ALL SELECT 1, 2, 2, '02', '2', 20, 20, 20 FROM DUAL
UNION ALL SELECT 1, 2, 3, '02', '3', 30, 30, 30 FROM DUAL
UNION ALL SELECT 1, 2, 4, '03', '21', 40, 40, 40 FROM DUAL
)
SELECT na a_no, nb a_nod, nd a_sn, item, oc old_item, nc new_item
            FROM(
              SELECT oa, ob, od, NVL(na,oa) na, NVL(nb,ob) nb, nd, item    
              ,(SELECT '['||code||']'||code_name FROM CODE_TABLE WHERE stat='A' AND code = oc) oc
              ,(SELECT '['||code||']'||code_name FROM CODE_TABLE WHERE stat='A' AND code = nc) nc
              FROM
              (
                SELECT oa, ob, oc, od, na, nb, nc, nd, item
                FROM (
                  SELECT oa,ob,NVL(oc, ' ') oc,od,NVL(na,'') na, NVL(nb,'') nb,NVL(nc, ' ') nc,nd, 'mcode1' item
                  FROM ( SELECT a_no oa, a_nod ob, mcode1 oc, 0 od FROM MASTER_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, mcode1 nc, 0 nd FROM MASTER_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                )
                WHERE oc<>nc
              )
              UNION ALL
              SELECT oa, ob, od, NVL(na,oa) na, NVL(nb,ob) nb, nd, item    
              ,(SELECT '['||code||']'||code_name FROM CODE_TABLE WHERE stat='A' AND code = oc) oc
              ,(SELECT '['||code||']'||code_name FROM CODE_TABLE WHERE stat='A' AND code = nc) nc
              FROM
              (
                SELECT oa, ob, oc, od, na, nb, nc, nd, item
                FROM (
                  SELECT oa,ob,NVL(oc, ' ') oc,od,NVL(na,'') na, nvl(nb,'') nb,NVL(nc, ' ') nc,nd, 'mcode2' item
                  FROM ( SELECT a_no oa, a_nod ob, mcode2 oc, 0 od FROM MASTER_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, mcode2 nc, 0 nd FROM MASTER_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                )
                WHERE oc<>nc
              )
              UNION ALL
              SELECT oa, ob, od, NVL(na,oa) na, NVL(nb,ob) nb, nd, item     
              ,(SELECT '['||code||']'||code_name FROM CODE_TABLE WHERE stat='A' AND code = oc) oc
              ,(SELECT '['||code||']'||code_name FROM CODE_TABLE WHERE stat='A' AND code = nc) nc
              FROM
              (
                SELECT oa, ob, oc, od, na, nb, nc, nd, item
                FROM (
                  SELECT oa,ob,nvl(oc, ' ') oc,od,NVL(na,'') na, NVL(nb,'') nb,NVL(nc, ' ') nc,nd, 'mcode3' item
                  FROM ( SELECT a_no oa, a_nod ob, mcode3 oc, 0 od FROM MASTER_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, mcode3 nc, 0 nd FROM MASTER_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                )
                WHERE oc<>nc
              )
              UNION ALL
              SELECT oa, ob, od, NVL(na,oa) na, NVL(nb,ob) nb, nd, item , oc, nc
              FROM
              (
                SELECT oa, ob, oc, od, na, nb, nc, nd, item
                FROM (
                  SELECT oa,ob,NVL(oc, ' ') oc,od,NVL(na,'') na, NVL(nb,'') nb,NVL(nc, ' ') nc,nd, 'jumin' item
                  FROM ( SELECT a_no oa, a_nod ob, jumin oc, 0 od FROM MASTER_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, jumin nc, 0 nd FROM MASTER_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                )
                WHERE oc<>nc
              )
              UNION ALL
              SELECT oa, ob, od, NVL(na,oa) na, NVL(nb,ob) nb, nd, item, oc, nc
              FROM
              (
                SELECT oa, ob, oc, od, na, nb, nc, nd, item
                FROM (
                  SELECT oa,ob,NVL(oc, ' ') oc,od,NVL(na,'') na, NVL(nb,'') nb,NVL(nc, ' ') nc,nd, 'name1' item
                  FROM ( SELECT a_no oa, a_nod ob, name1 oc, 0 od FROM MASTER_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, name1 nc, 0 nd FROM MASTER_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                )
                WHERE oc<>nc
              )
              UNION ALL
              SELECT oa, ob, od, NVL(na,oa) na, NVL(nb,ob) nb, nd, item, oc, nc
              FROM
              (
                SELECT oa, ob, oc, od, na, nb, nc, nd, item
                FROM (
                  SELECT oa,ob,NVL(oc, ' ') oc,od,NVL(na,'') na, NVL(nb,'') nb,NVL(nc, ' ') nc,nd, 'name2' item
                  FROM ( SELECT a_no oa, a_nod ob, name2 oc, 0 od FROM MASTER_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, name2 nc, 0 nd FROM MASTER_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                )
                WHERE oc<>nc
              )
              UNION ALL
              SELECT oa, ob, od, NVL(na,oa) na, NVL(nb,ob) nb, NVL(nd,od) nd, item   
              ,(SELECT '['||code||']'||code_name FROM CODE_TABLE WHERE stat='A' AND code = oc) oc
              ,(SELECT '['||code||']'||code_name FROM CODE_TABLE WHERE stat='A' AND code = nc) nc
              FROM
              (
                SELECT oa, ob, oc, od, na, nb, nc, nd, item               
                FROM (
                  SELECT oa,ob,NVL(oc, ' ') oc,od,NVL(na,'') na, NVL(nb,'') nb,NVL(nc, ' ') nc,nd, 'mcode4' item
                  FROM ( SELECT a_no oa, a_nod ob, mcode4 oc, 0 od FROM MASTER_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, mcode4 nc, 0 nd FROM MASTER_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                )
                WHERE oc<>nc
              )
              UNION ALL
              SELECT oa, ob, od,  NVL(na,oa) na, NVL(nb,ob) nb, NVL(nd,od) nd, item, oc, nc
              FROM
              (
                SELECT oa, ob, oc, od, na, nb, nc, nd, item
                FROM (
                  SELECT oa,ob,NVL(oc, ' ') oc,od,NVL(na,'') na, NVL(nb,'') nb,NVL(nc, ' ') nc,nd, 'file_name' item
                  FROM ( SELECT a_no oa, a_nod ob, file_name oc, 0 od FROM MASTER_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, file_name nc, 0 nd FROM MASTER_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                )
                WHERE oc<>nc
              )
              UNION ALL
              SELECT oa, ob, od,  NVL(na,oa) na, NVL(nb,ob) nb, nd, item
              ,(SELECT '['||code||']'||code_name FROM CODE_TABLE WHERE stat='A' AND code = oc) oc
              ,(SELECT '['||code||']'||code_name FROM CODE_TABLE WHERE stat='A' AND code = nc) nc
              FROM
              (
                SELECT oa, ob, oc, od, na, nb, nc, nd, item
                FROM (
                  SELECT oa,ob,NVL(oc, ' ') oc,od,NVL(na,'') na, NVL(nb,'') nb,NVL(nc, ' ') nc,nd, 'mcode5' item
                  FROM ( SELECT a_no oa, a_nod ob, mcode5 oc, 0 od FROM MASTER_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, mcode5 nc, 0 nd FROM MASTER_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                )
                WHERE oc<>nc
              )
              UNION ALL
              SELECT oa, ob, od,  NVL(na,oa) na, NVL(nb,ob) nb, NVL(nd,od) nd, item
              ,(SELECT '['||code||']'||code_name FROM CODE_TABLE1 WHERE code = to_number(trim(oc))) oc
              ,(SELECT '['||code||']'||code_name FROM CODE_TABLE1 WHERE code = to_number(trim(nc))) nc
              FROM
              (
                SELECT oa, ob, oc, od, na, nb, nc, nd, item
                FROM(
                  SELECT oa,ob,NVL(oc, ' ') oc,od,NVL(na,'') na, nvl(nb,'') nb,NVL(nc, ' ') nc,nd, 'code' item
                  FROM ( SELECT a_no oa, a_nod ob, code oc, a_sn od FROM DETAIL_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, code nc, a_sn nd FROM DETAIL_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                  WHERE od(+)=nd
                )
                WHERE oc<>nc
                UNION
                SELECT oa, ob, oc, od, NVL(na,oa) na, NVL(nb,ob) nb, nc, nd, item
                FROM(
                  SELECT oa,ob,NVL(oc, ' ') oc,od,NVL(na,'') na, NVL(nb,'') nb,NVL(nc, ' ') nc,nd, 'code' item
                  FROM ( SELECT a_no oa, a_nod ob, code oc, a_sn od FROM DETAIL_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, code nc, a_sn nd FROM DETAIL_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                  WHERE od=nd(+)
                )
                WHERE oc<>nc
              )
              UNION ALL
              SELECT oa, ob, od, NVL(na,oa) na, NVL(nb,ob) nb, NVL(nd,od) nd, item, oc, nc
              FROM
              (
                SELECT oa, ob, oc, od, na, nb, nc, nd, item
                FROM(
                  SELECT oa,ob,NVL(oc, ' ') oc,od,NVL(na,'') na, NVL(nb,'') nb,NVL(nc, ' ') nc,nd, 'desc1' item
                  FROM ( SELECT a_no oa, a_nod ob, desc1 oc, a_sn od FROM DETAIL_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, desc1 nc, a_sn nd FROM DETAIL_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                  WHERE od(+)=nd
                )
                WHERE oc<>nc
                UNION
                SELECT oa, ob, oc, od, na, nb, nc, nd, item FROM(
                  SELECT oa,ob,NVL(oc, ' ') oc,od,NVL(na,'') na, NVL(nb,'') nb,NVL(nc, ' ') nc,nd, 'desc1' item
                  FROM ( SELECT a_no oa, a_nod ob, desc1 oc, a_sn od FROM DETAIL_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, desc1 nc, a_sn nd FROM DETAIL_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                  WHERE od=nd(+)
                )
                WHERE oc<>nc
              )
              UNION ALL
              SELECT oa, ob, od, NVL(na,oa) na, NVL(nb,ob) nb, NVL(nd,od) nd, item, oc, nc
              FROM
              (
                SELECT oa, ob, oc, od, na, nb, nc, nd, item
                FROM(
                  SELECT oa,ob,NVL(oc, ' ') oc,od,NVL(na,'') na, NVL(nb,'') nb,NVL(nc, ' ') nc,nd, 'wt' item
                  FROM ( SELECT a_no oa, a_nod ob, TO_CHAR(wt) oc, a_sn od FROM DETAIL_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, TO_CHAR(wt) nc, a_sn nd FROM DETAIL_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                  WHERE od(+)=nd
                )
               WHERE oc<>nc
                UNION
                SELECT oa, ob, oc, od, na, nb, nc, nd, item
                FROM(
                  SELECT oa,ob,NVL(oc, ' ') oc,od,NVL(na,'') na, nvl(nb,'') nb,NVL(nc, ' ') nc,nd, 'wt' item
                  FROM ( SELECT a_no oa, a_nod ob, TO_CHAR(wt) oc, a_sn od FROM DETAIL_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, TO_CHAR(wt) nc, a_sn nd FROM DETAIL_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                  WHERE od=nd(+)
                )
                WHERE oc<>nc
              )
              UNION ALL
              SELECT oa, ob, od,  NVL(na,oa) na, NVL(nb,ob) nb, NVL(nd,od) nd, item, oc, nc
              FROM
              (
                SELECT oa, ob, oc, od, na, nb, nc, nd, item 
                FROM(
                  SELECT oa,ob,NVL(oc, ' ') oc,od,na,nb,NVL(nc, ' ') nc,nd, 'money' item
                  FROM ( SELECT a_no oa, a_nod ob, TO_CHAR(money) oc, a_sn od FROM DETAIL_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, TO_CHAR(money) nc, a_sn nd FROM DETAIL_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                  WHERE od(+)=nd
                )
                WHERE oc<>nc
                UNION
                SELECT oa, ob, oc, od, na, nb, nc, nd, item FROM(
                  SELECT oa,ob,NVL(oc, ' ') oc,od,na,nb,NVL(nc, ' ') nc,nd, 'money' item
                  FROM ( SELECT a_no oa, a_nod ob, TO_CHAR(money) oc, a_sn od FROM DETAIL_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                       ( SELECT a_no na, a_nod nb, TO_CHAR(money) nc, a_sn nd FROM DETAIL_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                  WHERE od=nd(+)
                )
                WHERE oc<>nc
              )
              UNION ALL
              SELECT oa, ob, od, NVL(na,oa) na, NVL(nb,ob) nb, NVL(nd,od) nd, item, oc, nc FROM
              (
              SELECT oa, ob, oc, od, na, nb, nc, nd, item FROM(
                SELECT oa,ob,NVL(oc, ' ') oc,od,na,nb,NVL(nc, ' ') nc,nd, 'qt' item
                FROM ( SELECT a_no oa, a_nod ob, TO_CHAR(qt) oc, a_sn od FROM DETAIL_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                     ( SELECT a_no na, a_nod nb, TO_CHAR(qt) nc, a_sn nd FROM DETAIL_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                WHERE od(+)=nd
              )
              WHERE oc<>nc
              UNION
              SELECT oa, ob, oc, od, na,  nb, nc, nd, item FROM(
                SELECT oa,ob,NVL(oc, ' ') oc,od,na,nb,NVL(nc, ' ') nc,nd, 'qt' item
                FROM ( SELECT a_no oa, a_nod ob, TO_CHAR(qt) oc, a_sn od FROM DETAIL_TABLE oldTable WHERE a_no=1 AND a_nod=2-1) o,
                     ( SELECT a_no na, a_nod nb, TO_CHAR(qt) nc, a_sn nd FROM DETAIL_TABLE newTable WHERE a_no=1 AND a_nod=2) n
                WHERE od=nd(+)
              )
              WHERE oc<>nc
              )
            )
            /* where nb!=1  이부분은 풀면 원하는대로 나오지 않습니다.*/
            ORDER BY na,od,nd

[Top]
No.
제목
작성자
작성일
조회
39257for 문안에 select [1]
나재호
2012-01-27
4196
39255자기자신 update [1]
미키
2012-01-26
3759
39254예측 데이터를 구하고 싶은데 잘 안되네요
박진경
2012-01-26
3540
39253고수님들 쿼리좀 봐주세요..
오라초
2012-01-26
3808
39252DBMS_JOB PACKAGE 사용을 하려 합니다. [1]
잡스케쥴
2012-01-25
4326
39251취미별로 데이타를 정렬시키는 쿼리를 알려주세요 [1]
궁금이
2012-01-24
3138
39250오라클 8.1.7버전에서 -> 11.2 로 올릴시 pro cobol 관련 질문입니다.
2012-01-20
3458
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다