SQL Server 2008: почему этот раунд не будет равен двум десятичным знакам?

SELECT ROUND(WeightInOZ / 16, 2)as WeightInLbs FROM Inventory 

Результат, который я получаю, выглядит как целое число 1,2 и т. Д.

Попробуйте изменить 16 – 16,0

 SELECT ROUND(WeightInOZ / 16.0, 2)as WeightInLbs FROM Inventory 

Вы видите странные результаты, потому что обрабатываете результаты своего деления как целого, а не десятичного. Указание .0 указывает серверу sql обрабатывать его как десятичное.

ОБНОВИТЬ:

Если конечный ноль вас высмеивает, вы всегда можете это сделать:

 SELECT CAST(ROUND(WeightInOZ / 16.0, 2) AS NUMERIC(8,2)) as WeightInLbs FROM Inventory 

Проблема заключается в следующем:

 WeightInOZ / 16 

Поскольку вы имеете дело с двумя целыми числами, SQL Server усекает остаток, поэтому нет дробного компонента для его округления.

То, что вы хотите сделать, это заставить его выполнять деление с плавающей запятой (или десятичным). Самый простой способ – изменить 16.0 .

 SELECT ROUND(WeightInOZ / 16.0, 2)as WeightInLbs FROM Inventory 
Давайте будем гением компьютера.