Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中四舍五入到最接近的500或1000_Sql_Sql Server - Fatal编程技术网

在SQL Server中四舍五入到最接近的500或1000

在SQL Server中四舍五入到最接近的500或1000,sql,sql-server,Sql,Sql Server,可能重复: 在SQL Server中,是否可以将数字四舍五入到最接近的500或1000 例如: 14425.00->14500.00 14585.00->15000.00始终四舍五入: SELECT (((col+250)/500)*500) FROM table; ((value+499)/500)*500 向上或向下取整: ((value+250)/500)*500 我会用这个,用数据举例 declare @num int set @num = 749 select (round(

可能重复:

在SQL Server中,是否可以将数字四舍五入到最接近的500或1000

例如:

14425.00->14500.00
14585.00->15000.00始终四舍五入:

 SELECT (((col+250)/500)*500) FROM table;
((value+499)/500)*500
向上或向下取整:

((value+250)/500)*500

我会用这个,用数据举例

declare @num int
set @num = 749
select (round(((@num+250)/500),0)*500)
Result = 500
或者证明它是有效的

declare @num int
set @num = 750
select (round(((@num+250)/500),0)*500)
Result = 1000
然而,将其包装成一个通用函数是明智的

CREATE FUNCTION ufnRoundMyValue 
(
    @val int,
    @base int
)
RETURNS int
AS
BEGIN
    declare @res int

    select @res = (round(((@val+(@base/2))/@base),0)*@base) 
    RETURN @res
END
GO
那就是

select dbo.ufnRoundMyValue(749,500)

无论你在哪里需要它

它都是一样的,因为它总是不想凑在一起。