tSQL智能取整需要帮助



我有一项任务要使用sql游标转换(四舍五入)小数(包含2位小数),并使用以下规则

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

a) 0,1,2,那么我必须把它变成0。

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

c) 8,9,那么我必须把它变成0(并在第一个十进制数字中加1)。

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

你能给我推荐一个智能sql来实现这些规则吗?

提前感谢!

SELECT ROUND(<column>*2, 1)/2

您的问题有点复杂,但您不想使用游标。

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语句中来查看这些值。

最新更新