2013-11-01 3 views
0

Я новичок-программист SQL, но искал здесь и многих других форумах SQL и не могу понять, почему мой простой скрипт деления по-прежнему игнорирует десятичные знаки. Я CAST EVERYTHING как Decimal, но все равно не получаю никакого результата. ,Децималы, отсутствующие в выводе. Вывод

(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) 

, который собирается дать вам номер с два десятичных знака точности. Затем вы умножаете это на 100, что даст вам целое число.

Если вы пытаетесь получить процентное значение отформатированного до двух знаков после запятой, вы можете сделать это, как это, предполагая, что h4qqnb и h4hdnb десятичных полей, чтобы начать с:

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

Рабочего примером на http://sqlfiddle.com/#!2/279752/5/0

Смежные вопросы