您好我来自波斯尼亚和黑塞哥维那,在我们县,最小的票据是0.05, 现在,政府将我们的再审价格推至0.05或0.00。 因此,我想创建SQL标量值函数来舍入给定值的价格。 是否有一些构建解决方案,所以我可以节省我的查询资源。 Thanx在建议中 最好的问候
从评论中编辑:
答案 0 :(得分:4)
没有任何内置功能 - 但它很容易创建:
编辑:适应您的特殊舍入需求: - )
create function dbo.RoundToFiveOrZero(@inputValue MONEY)
returns MONEY
as begin
return FLOOR((@inputValue + 0.05) * 20.0) / 20.0
end
使用DECIMAL或MONEY数据类型 - 任何最适合您的数据。
像这样使用:
select
dbo.RoundToFiveOrZero(1.51),
dbo.RoundToFiveOrZero(1.53),
dbo.RoundToFiveOrZero(7.33),
dbo.RoundToFiveOrZero(7.37),
dbo.RoundToFiveOrZero(7.39)
结果为1.50,1.50,7.30,7.40,7.40。
马克
答案 1 :(得分:1)
感谢marc_s,我改为money数据类型。
float vs decimal vs money datatype article and flowchart
ALTER FUNCTION dbo.ufnRound (@number money)
RETURNS money
AS
BEGIN
RETURN FLOOR(@number*20) / 20
END
GO
SELECT dbo.ufnRound (1.22), dbo.ufnRound (1.23), dbo.ufnRound (1.27), dbo.ufnRound (1.28)
-- gives 1.2 1.2 1.25 1.25