ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Oracle - 값 중간에 빈부분 채워넣는 쿼리
    DB/Oracle 2020. 5. 18. 09:39
    반응형

    SELECT CASE WHEN c <> 1 AND c <> 0 THEN 1 -- min값이 1이 아니면 1로 처리 
                WHEN nullVal = 99 THEN 1 -- 해당 값이 null이면 1로 처리
                ELSE Test END AS seqVal
      FROM (SELECT NVL (a + 1, 1) AS Test, 

                                               c,

                                              nullVal -- 값이 null일때 99로 반환되는 값
              FROM (SELECT a,
                           NVL (a + 1, 1) AS Test,
                           c,
                           nullVal
                      FROM (SELECT a,
                                   NVL (LEAD (A) OVER (ORDER BY A), 0) AS b,
                                   0                                   AS c,
                                   0                                   AS nullVal
                              FROM (SELECT seq AS a
                                      FROM 테이블
                                     WHERE     첫번째 키 = 값
                                           AND 두번째 키 = 값
                                           AND 세번재 키 = 값
                                           AND 네번재 키 = 값 
                                           AND 다섯번째 키 = 값)
                            UNION
                            SELECT NVL (MAX (TO_NUMBER (seq)), 1) AS a,
                                   1                                  AS b,
                                   NVL (MIN (TO_NUMBER (seq)), 1) AS c,
                                   NVL (SUM (seq), 99)            AS nullVal -- numberType이 1Byte라 sum해도 99로 오지못함
                              FROM 테이블
                                    WHERE     첫번째 키 = 값
                                           AND 두번째 키 = 값
                                           AND 세번재 키 = 값
                                           AND 네번재 키 = 값 
                                           AND 다섯번째 키 = 값)
                     WHERE B <> 0 AND A <> B - 1 AND ROWNUM = 1))

    반응형

    댓글

Designed by Tistory.