SQL Cast для отображения десятичных дробей
У меня есть следующее утверждение в моем предложении выбора;
(([Complt_Emp] + [No_Non_Complt_Emp])/ [No_of_Emp]) as Total_Completed
Как мне реализовать CAST "cast(your_float_column as decimal(10,2))"? Я хочу, чтобы в моем столбце Total_Completed отображалось 2 десятичных знака
Я не могу получить правильный синтаксис!
Спасибо
4 ответа
Результат расчета зависит от типа используемых столбцов.
Если вы разделите столбцы int, вы получите результат int: 1 / 6 = 0
когда вы конвертируете каждое значение в десятичное, результатом будет: 1 / 6 = 0.1666666666666
Теперь вы хотите 2 десятичных результата, поэтому вы должны convert
/ round
предыдущий результат, чтобы получить ожидаемое значение
Посмотрите на скрипку для примера разделения и приведения / округления: http://sqlfiddle.com/
Простой трюк можно использовать:
round ( 1.0 * ( [Complt_Emp] + [No_Non_Complt_Emp] ) / [No_of_Emp] , 2 )
Составьте каждое выражение отдельно
CAST(([Complt_Emp] + [No_Non_Complt_Emp]) as decimal(10,2)) /
CAST([No_of_Emp] as decimal(10,2)) as Total_Completed
Я подозреваю, что все ваши значения INT. Int, разделенное на int, возвращает int.
(([Complt_Emp] + [No_Non_Complt_Emp])/ cast([No_of_Emp] as decimal(10,2)) as Total_Completed
Попробуй это
cast((([Complt_Emp] + [No_Non_Complt_Emp])/ [No_of_Emp]) as decimal(10,2)) as Total_Completed