오라클 컬럼을 세로로 뽑는방법이 궁굼해서 올립니다. 0 4 3,379

by 케를로스 [2013.10.27 21:03:30]



계약자

1차계약일

1차계약종료일

2차계약일

2차계약종료일

3차계약일

3차계약종료일

4차계약일

4차계약종료일

홍길동

2013-01-01

2013-01-10



2013-03-01

2013-03-10

2013-04-01

2013-04-10

김길동

2013-01-01

2013-01-20

2013-02-01

2013-02-20

2013-03-01

2013-03-20

2013-04-01

2013-04-20

남길동

2013-01-01

2013-01-15



2013-03-01

2013-03-20



가길동



2013-02-01

2013-02-20



2013-04-01

2013-04-20

 

위 표대로 테이블의 값이 있을때. 최초 계약일과 최종 계약일을 뽑아서 마스터 테이블에 저장을 해주어야 하는데요 가로를 세로로 만든다음에 first_value, last_value 로 뽑으려고 하는데 가로 칼럼을 세로로 붙히는 방법좀 알려주세요 아니면 first_value, last_value를 사용하지 않고도 뽑아올수 있는 방법이 있으면 가르쳐 주시면 감사하겠습니다. 부탁드리겠습니다.
 
by 마농 [2013.10.28 08:52:43]
SELECT 계약자
     , SUBSTR(v,   1, 10) 최초계약일
     , SUBSTR(v,  11, 10) 최초계약종료일
     , SUBSTR(v, -10, 10) 최종계약일
     , SUBSTR(v, -20, 10) 최종계약종료일
  FROM (SELECT 계약자
             , 1차계약일 || 1차계약종료일 ||
               2차계약일 || 2차계약종료일 ||
               3차계약일 || 3차계약종료일 ||
               4차계약일 || 4차계약종료일 AS v
          FROM 테이블
        )
;

by 케를로스 [2013.10.28 09:40:44]
미농님 감사합니다 ^^

by 우리집아찌 [2013.10.28 09:04:17]
 
-- 원하시는 결과물이 없어서 맘대로 출력..
WITH T (NM, DT1 , DT2 , DT3 , DT4 ) AS (
SELECT '홍길동','20130101','20130110','',''FROM DUAL UNION ALL
SELECT '김길동','20130101','20130120','20130201','20130220'FROM DUAL UNION ALL
SELECT '남길동','20130101','20130115','','' FROM DUAL UNION ALL
SELECT '가길동','','','20130201','20130220' FROM DUAL 
)

SELECT NM , GREATEST( NVL(DT1,'00000000') , NVL(DT2,'00000000') , NVL(DT3,'00000000') , NVL(DT4,'00000000')) DT FROM T
UNION ALL
SELECT NM , LEAST( NVL(DT1,'99999999') , NVL(DT2,'99999999') , NVL(DT3,'99999999') , NVL(DT4,'99999999') ) DT FROM T
ORDER BY NM , DT
 

by 케를로스 [2013.10.28 09:40:26]
감사합니다. 덕분에 궁굼하던점을 해결했습니다. 정말 감사합니다 ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입