2009-04-15 24 views
0

你好,我來自波斯尼亞和黑塞哥維那,在我們的縣最小的票據是0.05, 現在政府推動我們的重審價格四捨五入爲0.05或0.00。 因此,我希望創建SQL標量值函數來對給定值的價格進行四捨五入。 是否有一些內置的解決方案,以便我可以節省我的查詢資源。 感謝名單中建議 最好的問候從評論MS SQL在0.05或0.00回合

編輯:

  • 0,1,2,3,4去零
  • 5,6,7,8,9到零+ 1
+0

8,9,0,1,2到零? 3,4,5,6,7去5? – gbn 2009-04-15 16:51:06

+0

Simething like this or 0,1,2,3,4 go to zero and 5,6,7,8,9 going to zero + 1 – adopilot 2009-04-15 16:52:58

回答

1

感謝marc_s,我改變了錢的數據類型。

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 
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的結果。

馬克