혹시 이런식으로 결과가 나오도록 할수 있나요? 0 3 1,468

by 지에나르 [2016.03.30 15:22:38]


예를들면

SELECT 이름 FROM 테이블

결과는 이렇게 나오는데요.

이름
홍길동1
홍길동2
홍길동3
홍길동4
홍길동5
홍길동6
홍길동7

 

아래처럼 결과가 나오도록 쿼리를 만들수 있나요?

이름1 이름2 이름3 이름4 이름5
홍길동1 홍길동2 홍길동3 홍길동4 홍길동5
홍길동6 홍길동7      

항상 답변주시는분들 감사드립니다^^

by 창조의날개 [2016.03.30 15:37:20]

WITH 테이블(이름) AS(
      SELECT '홍길동1' FROM DUAL UNION ALL
      SELECT '홍길동2' FROM DUAL UNION ALL
      SELECT '홍길동3' FROM DUAL UNION ALL
      SELECT '홍길동4' FROM DUAL UNION ALL
      SELECT '홍길동5' FROM DUAL UNION ALL
      SELECT '홍길동6' FROM DUAL UNION ALL
      SELECT '홍길동7' FROM DUAL
)
SELECT MAX(DECODE(MOD(ROWNUM,5), 1, 이름)) 이름1
     , MAX(DECODE(MOD(ROWNUM,5), 2, 이름)) 이름2
     , MAX(DECODE(MOD(ROWNUM,5), 3, 이름)) 이름3
     , MAX(DECODE(MOD(ROWNUM,5), 4, 이름)) 이름4
     , MAX(DECODE(MOD(ROWNUM,5), 0, 이름)) 이름5
FROM 테이블
GROUP BY TRUNC((ROWNUM-1)/5)
ORDER BY TRUNC((ROWNUM-1)/5)
;

 


by swlee [2016.03.30 15:50:21]
WITH t(nm) AS(
      SELECT '홍길동1' FROM DUAL UNION ALL
      SELECT '홍길동2' FROM DUAL UNION ALL
      SELECT '홍길동3' FROM DUAL UNION ALL
      SELECT '홍길동4' FROM DUAL UNION ALL
      SELECT '홍길동5' FROM DUAL UNION ALL
      SELECT '홍길동6' FROM DUAL UNION ALL
      SELECT '홍길동7' FROM DUAL
)
select *
  from (
        select nm
             , mod(rownum -1 ,5) +1 gb2
             , ceil(rownum/5) gb 
        from t)
Pivot (min(nm) For gb2 In (1 as 이름1,2 as 이름2,3 as 이름3,4 as 이름4,5 as 이름5));

 


by 지에나르 [2016.03.30 16:52:38]

답변주신 두분 너무 감사드립니다.

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