본문 바로가기

개발하자/ORACLE

컬럼 가로세로 바꾸기

with my_table as(
SELECT
   MAX(GUBUN) GUBUN, MAX(M) M,  MAX(M2) M2, MAX(DIV) DIV, MAX(PER) PER
   FROM    
     (
   SELECT '멋쟁이' GUBUN, '' M, '' M2, '' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '3630' M, '' M2, '' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '' M, '2847' M2, '' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '' M, '' M2, '783' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '' M, '' M2, '' DIV, '27.5%' PER  FROM DUAL
   )
      UNION ALL
     SELECT
   MAX(GUBUN) GUBUN, MAX(M) M,  MAX(M2) M2, MAX(DIV) DIV, MAX(PER) PER
   FROM
       (
   SELECT '못난이' GUBUN, '' M, '' M2, '' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '1' M, '' M2, '' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '' M, '2' M2, '' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '' M, '' M2, '1' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '' M, '' M2, '' DIV, '100%' PER  FROM DUAL
   ))
  select *from my_table;

 

sol)

with my_table as(
SELECT
   MAX(GUBUN) GUBUN, MAX(M) M,  MAX(M2) M2, MAX(DIV) DIV, MAX(PER) PER
   FROM    
     (
   SELECT '멋쟁이' GUBUN, '' M, '' M2, '' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '3630' M, '' M2, '' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '' M, '2847' M2, '' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '' M, '' M2, '783' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '' M, '' M2, '' DIV, '27.5%' PER  FROM DUAL
   )
      UNION ALL
     SELECT
   MAX(GUBUN) GUBUN, MAX(M) M,  MAX(M2) M2, MAX(DIV) DIV, MAX(PER) PER
   FROM
       (
   SELECT '못난이' GUBUN, '' M, '' M2, '' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '1' M, '' M2, '' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '' M, '2' M2, '' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '' M, '' M2, '1' DIV, '' PER  FROM DUAL
   UNION ALL
   SELECT '' GUBUN, '' M, '' M2, '' DIV, '100%' PER  FROM DUAL
   ))
  select decode(cnt,1,'M',decode(cnt,2,'M2',decode(cnt,3,'DIV','PER'))) as 구분,
        min(decode(gubun,'멋쟁이',decode(cnt,1,M,2,M2,3,div,4,per))) as 멋쟁이,
        min(decode(gubun,'못난이',decode(cnt,1,M,2,M2,3,div,4,per))) as 못난이
  from my_table,(SELECT ROWNUM CNT
            FROM USER_TABLES
            WHERE ROWNUM<5)
  group by cnt
  order by cnt;