【发布时间】:2020-06-12 05:17:16
【问题描述】:
我有这个问题:
SELECT sum((a.cant*b.cost)/b.cant) AS sum1
FROM
(SELECT partNo,cant
FROM table1 WHERE id=1) AS a,
(SELECT color,cost,cant
FROM table2 WHERE color in
(SELECT partNo FROM table1 WHERE id=1)) AS b
WHERE a.partNo=b.color
问题是有时b.cant会返回0,当我做这部分时:SELECT sum((a.cant*b.cost )/b.cant) AS sum1 它会返回除以零的错误消息,我正在考虑做这样的事情:
SELECT IF (b.cant=0,0,sum((a.cant*b.cost)/b.cant)) AS sum1
意味着如果 b.cant 等于 0,那么我想返回 0 作为最终结果并停止除法,但如果它不等于 0,那么我将进行除法,在我的头,这是解决方案,但给了我一个错误。
是否有其他方法可以避免除数,如果除数为 0,则返回 0?
【问题讨论】:
-
(很明显,)这是一个常见问题解答。请在考虑发布之前阅读您的教科书和/或手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:stackoverflow.com 和标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。反映你的研究。请参阅How to Ask 和投票箭头鼠标悬停文本。
-
在 SQL 中执行
IF的构造是CASE构造。 SELECT CASE WHEN b.cant=0 THEN 0 ELSE sum((a.cant*b.cost)/b.cant) END AS sum1 docs.microsoft.com/en-us/sql/t-sql/language-elements/…
标签: sql sql-server tsql join