【发布时间】:2021-05-07 09:47:11
【问题描述】:
我有以下代码,但出现错误:
遇到除以零错误。
SELECT
CASE WHEN SUM([monthly_qty]) = 0 THEN 999
ELSE ROUND(SUM([monthly_buy] * ([monthly_markup]+100)/100),2) * SUM([monthly_qty] / [monthly_qty]) END as [monthly_total]
FROM [xxxxx].[dbo].[quote_items] WHERE docid='10152'
导致错误的字段是第二个 [monthly_qty],就在 CASE 语句的 END 之前。
SUM([monthly_qty] / **[monthly_qty]**)
monthly_qty 的值为零,所以错误是有道理的,但我很困惑,因为这个字段在 CASE 语句中,所以预期的结果是 999
非常感谢任何帮助。
【问题讨论】:
-
fyi
case是一个表达式而不是一个语句。 -
您的逻辑在
case的第一个分支中有SUM([monthly_qty]),但失败是monthly_qty的未求和值。您需要一个 insidesum的案例。 -
你为什么要使用
SUM([monthly_qty] / [monthly_qty])?结果是错误(如果monthly_qty为零)或1(对于monthly_qty的非零值)?
标签: sql sql-server tsql case divide