지난번 일부 값을 계산못해주는 부분이 발생해서,, 아래와 같이 수정했는데... 오버플로 오류가 발생하네요
WITH t AS ( SELECT '2000152003' chitemseq, '6.95E+05' chitem1, '8.01E+05' chitem2, '4.82E+05' chitem3 UNION ALL SELECT '2000152003', '6.95E+11' , '8.01E+05' , '4.82E+05' ) SELECT chitemseq , chitem1, chitem2, chitem3 , x , CASE chitemseq WHEN '2000152003' THEN REPLACE(ROUND(x, -5), 'e+0', 'E+') --WHEN '2000152003' THEN CAST(CAST(x / POWER(10, y) AS NUMERIC(3,2)) AS VARCHAR) + 'E+'+CAST(RIGHT('0'+ y, 2) AS VARCHAR) END z FROM (SELECT chitemseq , chitem1, chitem2, chitem3 , ( CAST(chitem1 AS FLOAT) + CAST(chitem2 AS FLOAT) + CAST(chitem3 AS FLOAT) ) / 3 AS x , FLOOR(LOG10( ( CAST(chitem1 AS FLOAT) + CAST(chitem2 AS FLOAT) + CAST(chitem3 AS FLOAT) ) / 3)) AS y FROM t ) a ;
REPLACE(ROUND(x, -5), 'e+0', 'E+')
이렇게 표현을 하면,, 값이 700000 이렇게 나와서
그래서 CAST(CAST(x / POWER(10, y) AS NUMERIC(3,2)) AS VARCHAR) + 'E+'+CAST(RIGHT('0'+ y, 2) AS VARCHAR)
이런 표현식으로 변경했는데 문제는,,
data값중에 10승 이상이 생기면서 오버플로 에러가 밸생하네요.. 6.95E+11 이럴경우 POWER부분에서 에러발생하네요..
어떻게 하는게 좋을까요..