我正在创建一些报告,这些报告采用有限总数(假设为 2,500)的产品(在本例中假设为冰淇淋甜筒),并计算其中有多少在上菜前被打破。
现在我已经记下了 splinter 锥体的实际计数代码。
SELECT COUNT(broken_cones) FROM [ice].[ice_cream_inventory]
WHERE broken_cones = 'Yes'
但是,我还需要这个总数中 splinter 锥体的百分比。我一直在摆弄代码,但我一直遇到下面这段代码的“除以零”错误。
SELECT CAST(NULLIF((.01 * 2500)/Count(broken_cones), 0) AS
decimal(7,4)) FROM [ice].[ice_cream_inventory] WHERE broken_cones = 'Yes'
目前,没有任何 splinter 的锥体(并且一段时间内不会),因此现在的总数为零。如何将 NULL 情况显示为零?
我试图在混合中放置一个 ISNULL 语句,但我不断收到“除以零”错误。我这样做对吗?
::编辑::
这就是我最终得到的结果。
SELECT
CASE
WHEN COUNT(broken_cones) = 0 then 0
ELSE CAST(NULLIF((.01 * 2500)/Count(broken_cones), 0) AS decimal(7,4))
END
FROM [ice].[ice_cream_inventory] WHERE broken_cones = 'Yes'
最佳答案
使用 case 语句。
SELECT
CASE WHEN COUNT(broken_cones) = 0 then 0
ELSE CAST(NULLIF((.01 * 2500)/Count(broken_cones), 0) AS decimal(7,4)) END
FROM [ice].[ice_cream_inventory] WHERE broken_cones = 'Yes'
关于sql-server - 如何防止sql语句被零除错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23230041/