SELECT DISTINCT
D.F_NAME
, D.F_ID
,B.F_EDU
,D.F_BOOKNAME
,A.F_PAY_DATE AS F_BEGIN_DATE
,DATEADD(DD,60,A.F_PAY_DATE) AS F_END_DATE
,
( SELECT
CONVERT(DECIMAL(3,2),(CONVERT(DECIMAL(10,2),SUM(CASE WHEN E.F_IS_MOVIE_SEE = 'Y' THEN 1 ELSE 0 END)) / CONVERT(DECIMAL(10,2),COUNT(C.F_SMALLNAME))) * 100)
FROM
T_CURRI_MST C
LEFT OUTER JOIN T_RESULT_MST E ON C.F_BOOKCODE = E.F_BOOKCODE AND C.F_MOVIECODE = E.F_MOVIE_CODE AND C.F_SUBCODE = E.F_SUB_CODE
)
FROM
T_ORDER_MST A,
T_ORDER_DET B,
T_RESULT_MST D
WHERE A.F_ORDER_CODE = D.F_ORDER_CODE
AND B.F_ORDER_CODE = D.F_ORDER_CODE
AND A.F_ORDER_CODE = B.F_ORDER_CODE
AND B.F_EDU = D.F_EDU
GROUP BY D.F_NAME , D.F_ID, B.F_EDU ,D.F_BOOKNAME ,A.F_PAY_DATE
현재 본 동영상 본 갯수와 전체 등록된 동영상을 나눈 후 100을 곱해서 동영상 얼만큼 시청했는지 %로 보여주는 쿼리입니다.
이게 로컬에서 돌리면 이상이 없는데요...실섭에서 돌리면 8115 에러가 납니다.
인터넷 찾아보니 DBCC CHECKDB 해보라고 하는데..실섭이라서 그렇게는 못하겠고..
저 에러가 나지 않게 돌려서 실행시키려면 어떻게 해야 하나요?!
결과값은 몇점몇 프로로 나오면 더 좋겠지만 몇십프로 라도 일단 나와줬으면 좋겠어요 ㅠㅠ
Comment 2
-
주디아줌마
2013.05.31 09:55
-
맨즈밤
2013.05.31 11:12
업무적으로 자릿수제한이 필요한건가요? 그렇지않다면 DECIMAL은 가변형이라 최대치주어도 될거같은데요
DECLARE @A1 DECIMAL(38,2)
SET @A1=1.12
SELECT DATALENGTH(@A1)
SET @A1=123456789.12
SELECT DATALENGTH(@A1)
SET @A1=123456789123456789123456789.12
SELECT DATALENGTH(@A1)
SET @A1=123456789123456789123456789123456789.12
SELECT DATALENGTH(@A1)
8115 오류는 아래와 같은데요
메시지 8115, 수준 16, 상태 8, 줄 2
numeric을(를) 데이터 형식 numeric(으)로 변환하는 중 산술 오버플로 오류가 발생했습니다.
제가 보기에는 위의 빨간색 쿼리 부분의 DECIMAL(3,2), 오버플로우 되는 것 같은데 DECIMAL 부분을 수정하시면 될것 같습니다. DECIMAL(10,2)