我正在使用SQL Server 2014
,我的SQL查询中有以下T-SQL语法:
Select ...
NumDays/30 as 'NumMonth',
...
NumDays是总天数,上面的语法将其转换为月份。 我的问题是如果我有NumDays = 508,它的等效NumMonth就变成16。
然而,508/30 = 16.93333 我希望结果为17,基于以下逻辑:如果结果为> = 16.5,则显示17,否则显示16。
根据本网页上提供的四舍五入解决方案,CEILING
和FLOOR
函数似乎都不是正确的解决方案:SQL Server ROUND, CEILING and FLOOR Examples for Decimal, Numeric and Float Data Types
答案 0 :(得分:0)
试试这个......
Declare @NumDays INT = 508
,@i INT = 30
SELECT CAST( ROUND(CAST(@NumDays AS DECIMAL(18,2))
/ CAST(@i AS DECIMAL(18,2)) , 0) AS INT)
在除以之前将其转换为十进制,以保留值的小数部分。