gpt4 book ai didi

SQL 除以零错误 - ISNULL 不起作用?

转载 作者:行者123 更新时间:2023-12-02 06:47:39 33 4
gpt4 key购买 nike

我正在处理一个查询,该查询执行一些数学运算,特别是总数和百分比。由于此数据根据所选日期范围是可选的,因此有时没有任何数据可以用来运行此数学运算。

在这种情况下,我遇到了被零除的错误。

    SELECT (
SELECT COUNT(s.ScoreID) AS TotalSamples,
COUNT(CASE WHEN qd.QDResultDesc = 'Pass' THEN 1 END) AS Pass,
COUNT(CASE WHEN qd.QDResultDesc = 'Pass' THEN 1 END) * 100 / COUNT(s.ScoreID) AS Quality,
COUNT(CASE WHEN qd.QDResultDesc = 'Fail' THEN 1 END) AS Fail,
COUNT(CASE WHEN qd.QDResultDesc = 'Fail' THEN 1 END) * 100 / COUNT(s.ScoreID) AS Error
FROM SubmissionScore AS s
JOIN gSubmission AS sub
ON sub.SubmissionID = s.RecordID
JOIN gQDResult AS qd
ON s.QDResultID = qd.QDResultID
JOIN resources.emp.Employees as e
ON sub.TeammateQID = e.QID
WHERE e.CampusID = 66 -- Chennai
FOR XML PATH ('overall'), ELEMENTS, TYPE, ROOT ('chennai')
)
FOR XML PATH ('data'), ELEMENTS, TYPE, ROOT ('root');

我已经尝试添加 ISNULL 来解决缺失的部分,但这似乎无法解决问题。

在上面的查询中,如果没有数据,我希望输出只是 0

是否有一种简单的方法来调整此代码以解决此问题?

最佳答案

您正在寻找 NULLIF(),而不是 ISNULL():

            COUNT(CASE WHEN qd.QDResultDesc = 'Pass' THEN 1 END) * 100 / NULLIF(COUNT(s.ScoreID), 0) AS Quality,

您可能还需要 * 100.0,因为 SQL Server 执行整数运算。

关于SQL 除以零错误 - ISNULL 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53527393/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com