0

次のルールでSQLカーソルを使用して(小数点以下2桁の)小数点を変換(丸める)するタスクがあります

10進数の2桁目が次の場合:

a)0,1,2それなら私はそれを0に変えなければなりません。

b)3,4,5,6,7それなら私はそれを5に変えなければなりません。

c)8,9次に、それを0に変更する必要があります(最初の10進数に1を追加します)。

操作には、これらのルールを使用して変換する必要のある多くのレコードと値が含まれています。MicrosoftSQLServerデータベースを使用しています。

これらのルールを実現できるスマートS​​QLを提案してもらえますか?

よろしくお願いします!

4

2 に答える 2

2
SELECT ROUND(<column>*2, 1)/2
于 2012-07-17T21:14:04.610 に答える
0

問題は少し複雑ですが、カーソルを使用したくありません。

update t
    set val = (case when floor(num*100)%10 in (0, 1, 2)
                    then (floor(num*100) - floor(num*100)%10)/100.0
                    when floor(num*100)%10 in (3, 4, 5, 6, 7)
                    then (floor(num*100) - floor(num*100)%10)/100.0 + 0.05
                    when floor(num*100)%10 in (8, 9)
                    then (floor(num*100) - floor(num*100)%10)/100.0 + 0.1 
               end)

大文字と小文字をselectステートメントに入れることで値を確認できます。

于 2012-07-17T21:17:09.607 に答える