我得错过一些明显的东西。
select CEILING(85/30) = 2
85/30 = 2.83333
我希望该值为3。
CEILING功能不应该为我收听吗?
答案 0 :(得分:14)
尝试
SELECT CEILING(85.0/30)
并进行比较
SELECT 85.0 / 30, 85 / 30
第一个示例使用浮点数,第二个示例使用整数,因此在触发上限函数之前舍入结果。你做的是
SELECT CEILING(2)
而不是
SELECT CEILING(2.833333)
答案 1 :(得分:3)
将其更改为:
select CEILING(85/30.0)
INT / INT产生一个INT,因此85/30将其向下舍入(FLOOR)。
答案 2 :(得分:1)
使用一些类型参数,您不必太担心输入数据的方式。这是一个山姆
DECLARE @int_num integer
DECLARE @int_dem integer
DECLARE @dec_num decimal(18,0)
DECLARE @dec_dem decimal(18,0)
SET @int_num = 85
SET @int_dem = 30
SET @dec_num = 85
SET @dec_dem = 30
SELECT CEILING(@int_num / @int_dem) AS int_div, CEILING(@dec_num / @dec_dem) AS dec_div
int_div | dec_div
----------------------
2 | 3