경진의 블로그

ROW와 COLUMN의 상호호환 본문

자바개발과정/오라클(Oracle)

ROW와 COLUMN의 상호호환

aith 2008. 5. 28. 00:20
ROW와 COLUMN의 상호호환

테이블을 생성해 준다 (PL/SQL문)

CREATE TABLE SAM_TAB02 (GUBUN VARCHAR2(5) );
DECLARE
    SU NUMBER;
BEGIN
    SU:=106;
    LOOP
        SU:=SU+1;
        EXIT WHEN SU>125;
        INSERT INTO SAM_TAB02
        VALUES('F'||TO_CHAR(SU));
    END LOOP;
    COMMIT;
END;

풀이 요약 (2회차다 요령것…)
※ ROWNUM을 이용해서 순번을 가져와 필요한 컬럼수 만큼 나누고 CEIL(나눈 값을 무조건 소수점 이상을 정수로 올림)을 이용해 GROUP BY 하면 된다

문제
Sam_tab02에 있는 19건의 자료를 4건씩 묶어서 한 줄에 보여주고 앞에 해당 행의 번호를 보여주는 형식이다

SELECT ROWNUM no, gubun FROM sam_tab02;

SELECT ceil(no/4) rno,no,gubun
  FROM (
        SELECT rownum no,gubun FROM sam_tab02
       );

SELECT ceil(no/4) rno
      ,mod(no,4) cno
      ,no,gubun
  FROM (
        SELECT rownum no,gubun FROM sam_tab02
       );

SELECT ceil(no/4) rno
      ,mod(no,4) cno
      ,decode(mod(no,4),1,gubun) c1
      ,decode(mod(no,4),2,gubun) c2
      ,decode(mod(no,4),3,gubun) c3
      ,decode(mod(no,4),0,gubun) c4
  FROM (
        SELECT rownum no,gubun FROM sam_tab02
       );

SELECT ceil(no/4) rno
      ,max(decode(mod(no,4),1,gubun)) c1
      ,max(decode(mod(no,4),2,gubun)) c2
      ,max(decode(mod(no,4),3,gubun)) c3
      ,max(decode(mod(no,4),0,gubun)) c4
  FROM (
        SELECT rownum no,gubun FROM sam_tab02
       )
GROUP BY ceil(no/4);

문제
TEMP의 자료를 이용해 한 행에 5명의 사번과 성명을 보여주는 쿼리를 작성해본다.

SELECT ceil(no/5) rno
      ,max(decode(mod(no,5),1,emp_id)) id1
      ,max(decode(mod(no,5),1,emp_name)) name1
      ,max(decode(mod(no,5),2,emp_id)) id2
      ,max(decode(mod(no,5),2,emp_name)) name2
      ,max(decode(mod(no,5),3,emp_id)) id3
      ,max(decode(mod(no,5),3,emp_name)) name3
      ,max(decode(mod(no,5),4,emp_id)) id4
      ,max(decode(mod(no,5),4,emp_name)) name4  
      ,max(decode(mod(no,5),0,emp_id)) id5
      ,max(decode(mod(no,5),0,emp_name)) name5               
  FROM (
        SELECT rownum no,emp_id,emp_name FROM temp
       )
GROUP BY ceil(no/5);

'자바개발과정 > 오라클(Oracle)' 카테고리의 다른 글

뷰(VIEW)  (0) 2008.05.28
이전 레코드 값 참조 방법(전일 환율)  (0) 2008.05.28
ROW와 COLUMN의 상호호환  (0) 2008.05.28
ROWNUM & DECODE 문제풀이  (0) 2008.05.28
HIERACHICAL SELECT(계층질의)  (0) 2008.05.28
DECODE(IF문)  (0) 2008.05.27
0 Comments
댓글쓰기 폼