在SQL Server中进行舍入?

Mar*_*tin 9 sql-server stored-procedures rounding

我为sql server编写了一个分页系统.它工作得很好,但我试图返回总共有多少页

因此,如果每页有5条记录和2条记录,那么总共3页

这就是我所拥有的

   SELECT @TotalPages = ( (SELECT COUNT(*) FROM #TempItems) / @RecsPerPage )
Run Code Online (Sandbox Code Playgroud)

我的输出参数定义如下

   @TotalPages AS INT OUT,
Run Code Online (Sandbox Code Playgroud)

现在它有点工作:-)在我的测试中每页有5条记录和2条记录,所以上面的选择返回2但它的错误应该是3

这是因为它说5/2 =整数2 ...我怎么围绕......?

我累了天花板,但无法让它工作..

有任何想法吗?

提前致谢

Roo*_*noy 13

您是否尝试将分子和分母投射为浮点数然后使用Cieling?

整数运算总是给出整数.尝试以下方法 -

SELECT @TotalPages = CEILING((SELECT cast(COUNT(*) as float) FROM #TempItems) / @RecsPerPage ) 
Run Code Online (Sandbox Code Playgroud)


Guf*_*ffa 7

您可以使用整数算术:

SELECT @TotalPages = ((SELECT COUNT(*) FROM #TempItems) + @RecsPerPage - 1) / @RecsPerPage
Run Code Online (Sandbox Code Playgroud)

(很多年前我曾经想过这个公式(在有互联网的地方,你可以问这样的想法),并多次使用它.)