숫자1부터 100까지있는데 나눈나머지값이 0,1 이걸 기준으로 컬럼을 나눠서 표현하려고합니다. 0 3 928

by lgxj20 [2017.05.31 15:21:49]


SELECT RN
      ,DECODE(GU,0,RN) AS GU_0
      ,DECODE(GU,1,RN) AS GU_1
FROM(
SELECT MOD(RN,2) AS GU,RN     
FROM(
SELECT ROWNUM AS RN
FROM DUAL
WHERE 1=1
CONNECT BY LEVEL <= 100))

이렇게 까지는했는데 DECODE 문에 그룹함수를 사용하면 제가 원하는 형식으로 안나옵니다.

원하는건

1 | 2

3 | 4

5 | 6

이런식으로 표시되는걸 원합니다.

by 신이만든짝퉁 [2017.05.31 16:30:12]
SELECT   MAX(ODD) ODDNO, MAX(EVEN) EVENNO
    FROM (SELECT     NTILE(50) OVER(ORDER BY LEVEL) GROUPNO
                   , DECODE(MOD(LEVEL, 2), 1, LEVEL) ODD
                   , DECODE(MOD(LEVEL, 2), 0, LEVEL) EVEN
                FROM DUAL
          CONNECT BY LEVEL <= 100)
GROUP BY GROUPNO
ORDER BY ODDNO ASC;

 


by lgxj20 [2017.05.31 16:43:12]

분석해보겠습니다..처음보는 함수이네요..^^


by 마농 [2017.06.01 08:36:47]
SELECT MIN(DECODE(MOD(rn, 2), 1, rn)) gu_1
     , MIN(DECODE(MOD(rn, 2), 0, rn)) gu_0
  FROM (SELECT ROWNUM rn FROM dual CONNECT BY LEVEL <= 100)
 GROUP BY CEIL(rn / 2)
 ORDER BY CEIL(rn / 2)
;

 

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