하나의 테이블에 있는 특정 필드를 곱하는데 소수점 둘째자리가지만 취하여 레코드들을 곱합니다.
중요한건 절대 반올림되면 안된다는건데 sql서버가 간혹 다른 답을 주는거 같아요.
IDX OBJECT APPLY_RATE
-------------------------------------------------
1 갈대 1.65
2 대나무 2.05
3 참나무 1.5
4 소나무 2.15
APPLY_RATE필드의 값에는 소수점 둘째자리보다 큰 값은 절대 없습니다.
쿼리는 다음과 같습니다.
Select (IsNull((Select Round(Exp(SUM(LOG(CONVERT(DECIMAL(6,2),APPLY_RATE)))), 2, 0)
From THIS_TABLE
실제 결과는 10.9085625 이기 대문에 10.90 이죠.
그런데 위의 쿼리 결과는 10.91 이예요.
대부분 소수점 둘재자리 계산이 정확한데 간혹 이렇게 소수점 둘째자리에 .01이 더 많네요.
Round함수의 파라미터를 2,0이 아닌 2,1 로 주면 반대로 .01이 낮게 나오는 경우도 있어요.
2014버전에는 rounddown 함수가 있다고 하던데 현재 2014버전을 구매할 여력도 없고 업그레이드할 여유도 없네요 ㅠ.ㅠ
핵심은 소수점 둘재자리까지의 APPLY_RATE 필드의 값을 모두 곱하여 그 결과에서 소수점 둘째자리만 취하고 나머지는 버리는 것입니다.
경험 있으신분 도움 부탁드려요 ㅠ.ㅠ
소수점 올림 / 내림 / 반올림의 차이로 보여지네여..
10.9085625 을 올림이나 반올일함녀 10.91 이 맞으니까여
math 함수를 써서 강제로 내림처리해보시는것이 좋지 않을까 싶네여