case when 구문에서 자꾸 에러가 떠요,,,, 0 1 4,807

by 개논물 [2014.04.22 10:06:22]


    SELECT ST_ID, SC_CODE, ST_PAYDAY
                       , CASE WHEN   MONTH(DATEADD(m,0,GETDATE())) <> 2 THEN   CONVERT(VARCHAR(7),DATEADD(m,1,GETDATE()),23)+'-'+CONVERT(VARCHAR,ST_PAYDAY) ELSE  1    END 
                 FROM ST_STUDENT_INFO 
                 WHERE ST_TYPE=1 AND  (
                    SELECT    COUNT(*)  FROM ST_PAY_INFO WHERE  ST_STUDENT_INFO.ST_ID = ST_PAY_INFO.ST_ID AND LEFT(PAY_DAY,7) =   CONVERT(VARCHAR(7),DATEADD(m,0,getdate()),23) 
                 )  = 0

 

이 쿼리를 날리면 

서버 : 메시지 245, 수준 16, 상태 1, 줄 1
varchar 값 '2014-05-01'을(를) 데이터 형식 int(으)로 변환하지 못했습니다.  이런 에러가 뜨는데  이해가 가질 않습니다.

왜  int  형으로 형변환을 할려고 하는지  이해가 안가네요... 근데 문제는 

SELECT CONVERT(VARCHAR(7),DATEADD(m,1,GETDATE()),23)+'-'+CONVERT(VARCHAR,ST_PAYDAY) FROM ST_STUDENT_INFO 이렇게 커리를 날리면  잘됩니다...

선배님들 조언 좀 부탁드리겠습니다 감사합니다.

 

by 개논물 [2014.04.22 10:09:01]

아 해결했습니다....  ELSE 에 1 을  '1' 이렇게 하닌깐 되네요  결과대상 타입이 일치 하지 않아서 그런거 같습니다. 

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