0

我的任务是使用具有以下规则的 sql 游标来转换(四舍五入)小数(带有 2 个小数位)

如果第二个十进制数字是:

a)0,1,2 然后我必须把它变成 0。

b)3,4,5,6,7 然后我必须把它变成 5。

c)8,9 然后我必须将其变为 0(并在第一个十进制数字中添加 1)。

该操作包含许多需要使用这些规则转换的记录和值。我正在使用 Microsoft SQL Server 数据库。

你能建议我一个可以实现这些规则的智能 sql 吗?

提前谢谢!

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)

您可以通过将 case 放在 select 语句中来查看值。

于 2012-07-17T21:17:09.607 回答