Q & A

SQL FORMATTER 개선 요청

Date2026.01.06 / Hit : 86
오렌지  SQL FORMATTER 사용 시,

CASE 문에서 유독 정렬이 안 되고 있습니다.

사실 몇 개 더 있는데 지금은 기억이 나질 않네요.

AI를 사용한 SQL 포맷 결과 비교해봤습니다.

절실히 개선 요청드립니다.



---- 오렌지 포맷터 사용시-----
SELECT A.BR_CD
     , DECODE('X', 'M', B.MAIN_STY_CD, A.STY_CD) AS STY_CD
     , A.COL_CD
     , SUM(CASE
                               WHEN 'D' = 'D'
                            AND    'N' = 'N' THEN CASE
                                                                      WHEN C.SHOP_CD IN (SELECT SHOP_CD
                FROM   SHSHOP
                WHERE  COMP_CD = 'NG001'
                AND    BIZ_DIV = '102'
                AND    SHOP_GB NOT IN ('W'
                             , '7') ) THEN A.SALE_QTY
                                                                      ELSE 0
                                                                  END
                               ELSE A.SALE_QTY
                           END) AS TSALE_QTY
     , SUM(CASE
                               WHEN B.BR_CD = 'D'
                            AND    C.SHOP_CD IN (SELECT SHOP_CD
                FROM   SHSHOP
                WHERE  COMP_CD = 'NG001'
                AND    BIZ_DIV = '102'
                AND    SHOP_GB IN ('W'
                             , '7') ) THEN A.SALE_QTY
                               ELSE 0
                           END) AS TSALE_B2BQTY
FROM   SLPD A
     , PLSTYCD B
     , SHSHOP C
     , (SELECT ROWNUM AS RANK
             , TO_CHAR(SYSDATE - LEVEL + 1, 'YYYYMMDD') AS ENDDT
             , TO_CHAR(SYSDATE - LEVEL + 1 - 6, 'YYYYMMDD') AS STARTDT
        FROM   DUAL
        WHERE  TO_NUMBER(TO_CHAR(SYSDATE, 'd') - MOD((LEVEL - 1), 7)) = 1 CONNECT BY LEVEL <= 21) D
WHERE  A.COMP_CD = B.COMP_CD
AND    A.STY_CD = B.STY_CD
AND    A.COMP_CD = C.COMP_CD
AND    A.SHOP_CD = C.SHOP_CD
AND    A.SALE_DT <= D.ENDDT
AND    A.COMP_CD = 'NG001'
AND    A.BR_CD = 'D'
AND    D.RANK = 1
AND    A.STY_CD = 'D254UDW010'
AND    A.YEAR_CD IN ('25')
GROUP BY A.BR_CD , DECODE('X', 'M', B.MAIN_STY_CD, A.STY_CD) , A.COL_CD


-------- AI 포맷터 사용시 ---------



SELECT A.BR_CD
     , DECODE('X', 'M', B.MAIN_STY_CD, A.STY_CD) AS STY_CD
     , A.COL_CD
     , SUM(CASE
               WHEN 'D' = 'D'
                AND 'N' = 'N' 
               THEN CASE
                        WHEN C.SHOP_CD IN (
                                 SELECT SHOP_CD
                                 FROM   SHSHOP
                                 WHERE  COMP_CD = 'NG001'
                                   AND  BIZ_DIV = '102'
                                   AND  SHOP_GB NOT IN ('W', '7')
                             ) 
                        THEN A.SALE_QTY
                        ELSE 0
                    END
               ELSE A.SALE_QTY
           END) AS TSALE_QTY
     , SUM(CASE
               WHEN B.BR_CD = 'D'
                AND C.SHOP_CD IN (
                        SELECT SHOP_CD
                        FROM   SHSHOP
                        WHERE  COMP_CD = 'NG001'
                          AND  BIZ_DIV = '102'
                          AND  SHOP_GB IN ('W', '7')
                    ) 
               THEN A.SALE_QTY
               ELSE 0
           END) AS TSALE_B2BQTY
FROM   SLPD A
     , PLSTYCD B
     , SHSHOP C
     , (SELECT ROWNUM AS RANK
             , TO_CHAR(SYSDATE - LEVEL + 1, 'YYYYMMDD') AS ENDDT
             , TO_CHAR(SYSDATE - LEVEL + 1 - 6, 'YYYYMMDD') AS STARTDT
        FROM   DUAL
        WHERE  TO_NUMBER(TO_CHAR(SYSDATE, 'd') - MOD((LEVEL - 1), 7)) = 1
        CONNECT BY LEVEL <= 21) D
WHERE  A.COMP_CD = B.COMP_CD
  AND  A.STY_CD = B.STY_CD
  AND  A.COMP_CD = C.COMP_CD
  AND  A.SHOP_CD = C.SHOP_CD
  AND  A.SALE_DT <= D.ENDDT
  AND  A.COMP_CD = 'NG001'
  AND  A.BR_CD = 'D'
  AND  D.RANK = 1
  AND  A.STY_CD = 'D254UDW010'
  AND  A.YEAR_CD IN ('25')
GROUP BY A.BR_CD
       , DECODE('X', 'M', B.MAIN_STY_CD, A.STY_CD)
       , A.COL_CD
  • 대표전화
    1660-1675

  • 기술 문의
    02-6931-1734

  • 오렌지 문의
    070-8666-8175

  • 라이선스 문의
    02-6931-1728