2010-04-03 2 views
2

Мне удалось округлить мое значение до одной десятичной точки, но я хотел бы обрезать множество конечных нулей. Например, это:sql rounding value

ROUND(SUM(Duration),1) 

... в конце концов дает мне:

16.9000000000000000 

как я уравновесить все эти конечные нули.

MSSQL

ответ

3

round функция округляет число, но оно оставляет тип данных без изменений:

ROUND(3.14,1) --> 3.10 

Бросая номер для numeric(x,1), вы оба округлить его и изменить его тип данных для одной цифры точности:

CAST(3.14 as numeric(6,1)) --> 3.1 

Для вашего запроса, такой бросок может выглядеть следующим образом:

select cast(sum(duration) as numeric(6,1)) 

Но возможный формат отображения зависит от клиента. SQL Server Management Studio будет отображать numeric(x,1) с одной цифрой за точкой, но она может отображать ее по-другому. Форматирование числа лучше всего делается на стороне клиента, вне SQL.

2

Использование:

CONVERT(Decimal(9, 1), ROUND(SUM(duration), 1)) 

Второй параметр типа DECIMAL данных является точность - 1 даст вам одну цифру после запятой.