안녕하세요 고수님들 도움을 요청합니다.
오라클에서 다음과 같이 데이터를 가져오려구하는데 잘 안되네요.
고수닙들의 한수를 배우고자 글을 올립니다.
수납테이블 테이블에 아래와 같은 필드와 데이터들이 있습니다
납부자번호 미납일자
====================
900001 20020101
900001 20020201
900001 20020301
900002 20020101
900002 20020501
뽑아오고자하는 형식은
납부자번호별로 미납월을 한 레코드에 나타내려고 합니다.
형식은 다음과 같습니다
납부자번호 미납월1 미납월 2 미납월3 미납월4......미납월15 (여기가끝)
===================================================================
900001 20020101 20020201 20020301 더이상 미납월이 없으면 (''값처리)
900002 20020101 20020501 더이상 미납월이 없으면 (''값처리)
이런 식으로 하려고 합니다
부탁드립니다 고수님들
제가 이렇게 함 풀어 봤습니다. ^^
create table tab_tmp (
a varchar2(6),
b varchar2(8)
);
insert into tab_tmp values('900001', '20020101');
insert into tab_tmp values('900001', '20020201');
insert into tab_tmp values('900001', '20020301');
insert into tab_tmp values('900002', '20020101');
insert into tab_tmp values('900002', '20020501');
SELECT A
, TO_CHAR(SUM(DECODE(RUM, 1, B))) "1"
, TO_CHAR(SUM(DECODE(RUM, 2, B))) "2"
, TO_CHAR(SUM(DECODE(RUM, 3, B))) "3"
, TO_CHAR(SUM(DECODE(RUM, 4, B))) "4"
, TO_CHAR(SUM(DECODE(RUM, 5, B))) "5"
, TO_CHAR(SUM(DECODE(RUM, 6, B))) "6"
, TO_CHAR(SUM(DECODE(RUM, 7, B))) "7"
, TO_CHAR(SUM(DECODE(RUM, 8, B))) "8"
, TO_CHAR(SUM(DECODE(RUM, 9, B))) "9"
, TO_CHAR(SUM(DECODE(RUM, 10, B))) "10"
, TO_CHAR(SUM(DECODE(RUM, 11, B))) "11"
, TO_CHAR(SUM(DECODE(RUM, 12, B))) "12"
, TO_CHAR(SUM(DECODE(RUM, 13, B))) "13"
, TO_CHAR(SUM(DECODE(RUM, 14, B))) "14"
, TO_CHAR(SUM(DECODE(RUM, 15, B))) "15"
FROM (SELECT A
, B
, ROW_NUMBER() OVER (PARTITION BY A ORDER BY A) RUM
FROM TAB_TMP
)
GROUP BY A
오라클을 사용하신다고 하니 어날리틱펑션을 사용하실수 있을 겁니다.
물론 8i 이상에서만 가능하죠. ^^;;
머. 나름대로 속도도 나올꺼구요. 테스트 해봤는데....
실제로는 어떨지 모르겠네요. ^^
그럼 수고하세요. ^^
그냥 참고하시라 적어 봤습니다.