我使用此查询来舍入数字,然后舍入下一个值。现在我需要舍入到前面的值意味着如果值是45.67那么值应该是45.我尝试了这两个查询,但仍然需要调整值。
方法一:
parsename('$' + convert(varchar,convert(money,round(sum(Column1 * Column2),0)),1),2)
方法2:
parsename('$' + convert(varchar,convert(money,floor(Column1 * Column2),0),1),2)
真的很感激任何建议。
答案 0 :(得分:2)
CEILING函数返回大于或等于指定数值表达式的最小整数。 FLOOR函数返回小于或等于指定数值表达式的最大整数。例如,在考虑数字表达式12.9273时,CEILING返回13并且FLOOR返回12. FLOOR和CEILING的返回值与输入数值表达式具有相同的数据类型。
SELECT CEILING(12.9273);
Here is the result set.
13
SELECT FLOOR(12.9273);
Here is the result set.
12
http://technet.microsoft.com/en-us/library/ms190927%28v=sql.105%29.aspx
答案 1 :(得分:0)
要向下舍入,您可以使用FLOOR()
E.G。
DECLARE @number numeric(5,2)
SET @number = 45.67
SELECT FLOOR(@number)
您获得了结果45
举个例子,它看起来已经有效了吗?
declare @number1 numeric(5,2)
declare @number2 numeric(5,2)
set @number1 = 1.23
set @number2 = 21.69
select parsename('$' + convert(varchar,convert(money,floor(@number1 * @number2),0),1),2)
select @number1 * @number2
结果
$26
26.6787