2013-11-01 6 views
0

저는 신참 SQL 프로그래머입니다. 그러나 여기와 다른 많은 SQL 포럼을 검색했는데 왜 간단한 제 부서 스크립트가 십진수를 무시하는지 알 수 없습니다. 나는 십진법으로 모든 것을 캐스팅했으나 여전히 결과물에 아무런 영향을주지 않습니다. .Division 출력에 십진수가 누락되었습니다.

(CAST((ABS(CAST(CAST(SUM(h4qqnb) AS DECIMAL(12,4)) - CAST(SUM(h4hdnb) AS DECIMAL(12,4))AS DECIMAL(12,4)))/CAST(SUM(h4hdnb) AS DECIMAL(12,4))) AS DECIMAL(10,2))*100)||'%' AS Count_Variance_Rate, 

무엇이 누락 되었습니까?

감사합니다.

+0

사용중인 RDBM에 질문을 태그하십시오. –

답변

0
심각 추악한 표현이 너무 많은 캐스팅,하지만 본질적으로 (바로 바깥 쪽 CAST 문을보고) 무슨 일을하는지 당신에게 번호를 제공하는 것입니다

CAST(someNumber as DECIMAL(10,2) 

을 말하는

정밀도 2 자리. 100을 곱하면 정수가됩니다. http://sqlfiddle.com/#!2/279752/5/0에서

concat(cast(cast(abs(sum(h4qqnb) - sum(h4hdnb))/sum(h4hdnb) as decimal(10, 4)) * 100 as decimal(10, 2)), '%') as Count_Variance_Rate2 

근무 예 : 두 개의 소수점 이하 자릿수로 포맷 된 백분율 값을 얻으려고 노력하는 경우

, 당신은 그 h4qqnb와 h4hdnb로 시작하는 진수 필드입니다 가정, 이런 식으로 작업을 수행 할 수 있습니다