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
Другие вопросы по тегам