각 열로 들어간 데이타를 특정컬럼으로 그룹지어서 행으로 표현?? 0 3 1,966

by 손님 열을행으로 [2008.09.23 16:35:18]


안녕하십니까?? 쿼리 한수 배우고자 이렇게 글을 올립니다.

계속 고민하고 여기서 예제를 보고 해봐도 안되어서 이렇게 글을 올립니다.. 고수님들의 따뜻한 관심 부탁드립니다.

본론으로 들어가서 지금

C_PGM 이라 테이블에 데이타가

PGM_CD       PGM_NM       MENU_CD

    A01               화면1                A1

    A02               화면2                A2

    A03               화면3                A3

                        .

                        .

                        .

                        .

이런식으로 들어가 있구요.. 다른 테이블

T_PGM_LEVEL 에는

LEVEL_GB           PGM_CD          USE_YN           M1          M2          M3

  R                             A01                         N                 가           나            다

  D                             A01                         N                 가           나            다

  M                             A01                         N                 가           나            다

  R                             A02                        N                 가           나            다

  D                             A02                        N                 가           나            다

  M                             A03                        N                 가           나            다

  R                             A03                         N                 가           나            다

이런식으로 데이타가 들어가 있습니다.

여기서 이 두 테이블을 join해서

MENU_CD      PGM_CD      LEVEL_GB (R)       LEVEL_GB(M)         LEVEL_GB(D)         USE_YN        M1       M2    M3

   A1                        A01                 R                               D                              M                                N                 가         나      다

   A2                        A02                 R                               D                                                                 N                 가         나      다

   A3                        A03                 R                                                               M                                N                 가         나      다

 

이런식으로 데이타를 뽑으려고 하는데 안되서 질문을 드립니다.

고수님들의 많은 관심과 애정 부탁드립니다..

그럼 다들 즐거운 하루 되세요..

by 서성우 [2008.09.23 17:09:57]
WITH c_pgm AS(
SELECT 'a01' pgm_cd , '화면1' pgm_nm , 'a1' menu_cd FROM dual
UNION ALL
SELECT 'a02' pgm_cd , '화면2' pgm_nm , 'a2' menu_cd FROM dual
UNION ALL
SELECT 'a03' pgm_cd , '화면3' pgm_nm , 'a3' menu_cd FROM dual
)
,t_pgm_level AS(
SELECT 'r' level_gb , 'a01' pgm_cd ,'n' use_yn, '가' m1 ,'나' m2 , '다' m3 FROM dual
UNION ALL
SELECT 'd' level_gb , 'a01' pgm_cd ,'n' use_yn, '가' m1 ,'나' m2 , '다' m3 FROM dual
UNION ALL
SELECT 'm' level_gb , 'a01' pgm_cd ,'n' use_yn, '가' m1 ,'나' m2 , '다' m3 FROM dual
UNION ALL
SELECT 'r' level_gb , 'a02' pgm_cd ,'n' use_yn, '가' m1 ,'나' m2 , '다' m3 FROM dual
UNION ALL
SELECT 'd' level_gb , 'a02' pgm_cd ,'n' use_yn, '가' m1 ,'나' m2 , '다' m3 FROM dual
UNION ALL
SELECT 'm' level_gb , 'a03' pgm_cd ,'n' use_yn, '가' m1 ,'나' m2 , '다' m3 FROM dual
UNION ALL
SELECT 'r' level_gb , 'a03' pgm_cd ,'n' use_yn, '가' m1 ,'나' m2 , '다' m3 FROM dual
) SELECT a.menu,a.pgm,Max(a.r),Max(a.d),Max(a.m),a.use_yn,a.m1,a.m2,a.m3 FROM
(SELECT a.menu_cd menu,a.pgm_cd pgm,
Decode(b.level_gb,'r',b.level_gb) r,
Decode(b.level_gb,'d',b.level_gb) d,
Decode(b.level_gb,'m',b.level_gb) m,
b.use_yn use_yn,b.m1 m1,b.m2 m2,b.m3 m3
FROM c_pgm a, t_pgm_level b
WHERE a.pgm_cd = b.pgm_cd) a
GROUP BY a.menu,a.pgm,a.use_yn,a.m1,a.m2,a.m3

by 서성우 [2008.09.23 17:12:01]
as 로 묶은 것은 가상테이블을 생성해서 해서 한거구요 아래 select 부터 실행하시면 될것 같네요 그리고 위와 같은 질문은 아래 게시물에도 있는 내용인데 조회해서 그 부분도 보시면서 이해 하시면 빠르게 이해 하실것 같네요

by 아더왕 [2008.09.23 18:11:38]
서성우님 빠른 답변 감사합니다.
항상 도움주시는 고수님들 감사해요..
덕분에 고민해서 성공햇습니다.

모두들 즐거운 저녁 되세요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입