【发布时间】:2015-01-16 03:17:45
【问题描述】:
我有一列通过以下计算计算单位重量 (g)
SELECT ROUND (Weight,0) / nullif ([Units per Carton],0) * 454 AS [Unit Weight (g)]
FROM [Item Master]
我使用 nullif 来消除除以零。但我也想在除数上使用 Round()
我试过这个:
SELECT ROUND (Weight,0) / nullif(Round([Units per Carton],0) * 454) AS [Unit Weight (g)]
FROM [Item Master]
我试过这个:
SELECT nullif (ROUND (Weight,0) / (Round([Units per Carton],0) * 454) AS [Unit Weight (g)]
FROM [Item Master]
错误: 消息 156,级别 15,状态 1,行 1 关键字“AS”附近的语法不正确。
**那么我如何在除数上将圆形函数与 nullif 结合起来? **
新编辑的代码
SELECT ROUND (Weight,0) / nullif([Units per Carton],0) * 454 AS [Unit Weight (g)]
FROM [Item Master]
SELECT ROUND (Weight / NULLIF([Units per Carton],0),0) * 454 AS [Unit Weight (g)]
FROM [Item Master]
我尝试了上面的,我得到的结果就是这个 -> picture
结果不同,我希望结果为 151、227 和 227,但这些结果被 0 取代。
【问题讨论】:
-
你少了一个括号:
nullif (ROUND (Weight,0) ) -
@Lamak 我希望整个事情都被舍入,但只对除数进行 nullif 检查,所以我不除以零,所以我希望每箱单位被舍入并在其上进行 nuliif。 ....
-
如果要避免除以零,为什么要使用 /nullif ([Units per Carton],0)?
-
@Blam 因为不能将数字除以零,并且我将每箱的单位作为零值,通过使用 nullif 将这些值更改为 null 并且现在我知道 null 意味着那些是零值并且除以零是不可能的,但是其他数字像 153.4456 我希望那些四舍五入到 153 为了做到这一点我需要在 nullif 上使用 Round Function,你明白了吗????跨度>
标签: sql-server tsql rounding nullif