myslq쿼리문 작성 후 실행시 오류입니다 0 2 521

by 정태웅 [MySQL] [2021.04.11 13:30:34]


오류메세지.PNG (11,874Bytes)

SELECT A.RDO_TIME
     , A.ID
     , A.IVT_ID
     , A.BND
     , A.TDY_GNR_PWR
     , (SELECT (MAX(DSM1.DAS_ELC1))
          FROM TM_FL_DSM DSM1
         WHERE DSM1.ID = A.ID
           AND DSM1.IVT_ID = A.IVT_ID
           AND DSM1.LOC_DATE = (SELECT MAX(DSM2.LOC_DATE) 
                                  FROM TM_FL_DSM DSM2 
                                 WHERE DSM2.ID = A.ID 
                                   AND DSM2.IVT_ID = A.IVT_ID 
                                   AND DSM2.LOC_DATE <= REPLACE(DATE_SUB(A.LOC_DATE, INTERVAL 1 DAY), '-', ''))
       ) TTL_GNR_PWR
  FROM (SELECT "DAY" RDO_TIME
             , A.ID
             , A.IVT_ID
             , A.LOC_DATE
             , A.LOC_DATE BND
             , (MAX(A.ELC1) - MIN(A.ELC1)) TDY_GNR_PWR
          FROM TM_FL_MSR A
         WHERE LOC_DATE BETWEEN '20201230' AND '20201231'
         GROUP BY RDO_TIME
                , ID
                , IVT_ID
                , LOC_DATE                    
                , BND 
       ) A         
 ;

위와 같이 쿼리를 작성하여 수행 하면 아래와 같은 오류가 발생 합니다 고수님들의 조언 부탁드립니다. 

 

by 마농 [2021.04.12 12:55:04]

부등호(<=) 조건 사용시 발생한 오류인 듯 한데
해당 조건이 사용된 곳이 한군데 있네요.
여기 보면 replace 함수를 이용하는데.
replace 는 문자함수인데 인자를 날짜로 주는 부분도 잘못이고요.
DATE_FORMAT 함수를 이용하면 될 듯 하긴 하지만
굳이 하루 빼서 <= 조건 줄게 아니라 그냥 이퀄을 빼고 < 을 사용하면
하루 안빼도 되고, 함수 안써도 됩니다.
- 변경전 : AND dsm2.loc_date <= REPLACE(DATE_SUB(a.loc_date, INTERVAL 1 DAY), '-', ''))
- 변경후 : AND dsm2.loc_date < a.loc_date

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