2013-07-15 2 views
0

Я получаю неправильный результат, не снимая функцию cast.It должен быть простым, но я не могу понять. нужна помощь.Как я могу использовать функцию литья и получить правильный результат

SELECT  PRCo, Employee, LastName, FirstName, MidName, SortName, SSN, HireDate, DATEDIFF(month, HireDate, GETDATE())/12 AS Years, 
       CAST((80/2080) as decimal(10, 5)) 
FROM   AAAA 

80/2080 колонок должен быть 0.038470, но он показывает 0.00000 для всех записей

+0

которые RDBMS вы используете? – Barranka

ответ

4

Это делает операцию деления перед тем актеров. Когда вы делите два целых числа, результат также является целым числом, то есть любая десятичная часть усекается. В этом случае вы получите 0 для результата. Нулевой литой до decimal(10,5) по-прежнему остается 0.00000.

Это должно дать правильный результат:

CAST((80/2080.0) as decimal(10, 5)) 
+0

Большое вам спасибо. Я всегда забываю эту часть. :) –

0
CAST(80 as decimal(10, 5))/2080 
+0

большое вам спасибо –

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