행을 열로 바꾸는 방법에 대해서...가변 컬럼 관련 0 2 4,673

by 손님 행을 열로 ORACLE PL SQL 동적 ERP [2009.08.24 19:30:31]


열의 갯수가 고정이 아닌 가변적일 때에 어떻게 바꿀 수 있나요? 통합검색을 통해 찾아 보았지만 고정된 부분에 대해서만 나와 있더라구요. 스스로 해보려고 했지만 아직 제겐 어려워서 고수님들의 도움을 얻고자 합니다. 데이터는 다음과 같습니다.

column1    column2     reg_date    cnt
--------------------------------------------------------
    A                    A2            200801      3
    A                    A2            200803      13
    A                    A2            200805      23
    A                    A3            200801      10
    A                    A3            200802      20
    A                    A3            200803      30
    A                    A3            200804      40
   ....                    ....                  ....          ....
    A                    A3            200812      50
   ....                    ....                  ....          ....
    B                   B1            200801      15
    B                   B1            200802      25
    B                   B1            200803      35
    B                   B2            200801      100
|   ....                    ....                  ....          ....
    B                   B2            200812      300
   ....                    ....                  ....          ....

이런 data 가 있을때 아래와 같은 결과를 출력하고 싶습니다.

column1    column2       YM01    YM02    YM03    YM04    YM05 ....................YM11  YM12
----------------------------------------------------------------------------------------------------------------
    A                    A2               3            0          13            0           23      ...............     0            0
    A                    A3             10           20         30          40           0       ...............     0           50
    B                    B1            15           25         35            0            0       ...............     0            0
    B                    B2           100          ..........................................................................           300

reg_date  는 사용자로부터 범위를 입력받는다고 가정할 경우, 위와 같이 고정적인 열이 아니라 열의 범위에 따라 달라집니다. 예를 든다면 입력범위가 200809 에서부터 200910 까지이면 다음과 같은 결과를 출력하고 싶습니다.

column1    column2     200809  200810 ...................................................... 200909  200910
----------------------------------------------------------------------------------------------------------------
    A                    A2               3            0          13            0           23      ...............     0            0
    A                    A3             10           20         30          40           0       ...............     0           50
    B                    B1            15           25         35            0            0       ...............     0            0
    B                    B2           100          ..........................................................................           300

혹시 이것을 쿼리로 구현할 수 있는지요?
짧은 지식은 가진 저로서는 도저히 불가능해서 문의합니다.
많은 도움 부탁드립니다.

by 러드 [2009.08.24 20:06:20]
가변적이 쿼리는 힘들다고 생각이 드네요!!!

한 셀에 계속해서 연결해서 찍으면 가능하겠지만 틀린 col로는;;;;

이런것은 보통 툴에서 처리를 합니다. 크로스텝 이라는 기능이 있으시면
값을 col로 된 구분을 row로 변경한다음에 프로그램에서 row->col로 변경하는 방식입니다.

by 마농 [2009.08.25 08:18:28]
행을 열로 전환하는 고정적인 쿼리를 알고 계시다면 거기에 응용하시면 됩니다.
프로그램단계에서 쿼리를 텍스트변수에 담아 가변적으로 바뀌는 부분을
루프 돌리면서 텍스트 추가하는 방식으로 만들어 내시면 됩니다.
최종 만들어진 텍스트 상태의 쿼리를 실행하시면 됩니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입