こんにちは私はボスニア・ヘルツェゴビナから来ており、私たちの郡で最も小さい紙幣は0.05です。 政府は0.05または0.00で四捨五入しています。 そのため、指定した値の価格を四捨五入するためのSQL Scalar Valued関数を作成します。 解決策がいくつかあるので、私のクエリのリソースを節約できます。アドバイス 敬具コメントから0.05または0.00でMS SQLを丸めてください
編集中 ありがとうは:
- 0,1,2,3,4はゼロ+ 1に行くゼロ
- 5,6,7,8,9に行きます
こんにちは私はボスニア・ヘルツェゴビナから来ており、私たちの郡で最も小さい紙幣は0.05です。 政府は0.05または0.00で四捨五入しています。 そのため、指定した値の価格を四捨五入するためのSQL Scalar Valued関数を作成します。 解決策がいくつかあるので、私のクエリのリソースを節約できます。アドバイス 敬具コメントから0.05または0.00でMS SQLを丸めてください
編集中 ありがとうは:
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
私は本当に使っていませんSQLアプリケーションで私の価格のための "FLOAT" ...... –
良い点...私は投稿に急いでいた – gbn
まだ何かが欠けていませんか?あなたは1.27から1.25に丸めています - 私がその投稿を理解している限り、あなたはそれを1.30に丸めるべきです - いいえ? –
あり、組み込みの何もないのです - しかし、それは作成するのは簡単です:
EDIT:
:-)あなたの特別な丸めニーズに適応が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:
はこのようにそれを使用してください。
マルク・
8,9,0,1,2はゼロに行きますか? 3,4,5,6,7は5に行く? – gbn
こういうか0,1,2,3,4は0になり、5,6,7,8,9は0になります+ 1 – adopilot
スイスでもラウンドしますが、これは切り捨てです – gbn