mysql - SQL查询: NULL values that should not be NULL when using aggregate function with left join

标签 mysql sql left-join aggregate-functions

我对 SQL 没有太多经验,我正在尝试解决这个查询问题。 我有 3 个表:项目、计算器和部分账单 (注意:您在代码中看到的“计算器”列我添加的“k”、“l”、“m”等是真实的...我没有给它们这些名称...)。

查询工作正常,但我期望从聚合函数(“sumofTotal”列)获得的值的部分返回为空值,并且它们不应该为空。 如果有人指出查询中的错误,我将不胜感激。

SELECT Projects.SpCall,Projects.CustName,Projects.CustNumber
,Projects.ReceiveDate,Projects.StartDate,Projects.ProjectType
,Calculator.AN,Projects.Professional,Projects.PmUserName
,Projects.AcountManager,Projects.CrmCallNum,Projects.ProjectCategory
,Projects.CallNum,Projects.ContactName,Projects.ContactPhone
,Projects.ContactEmail,Projects.HiddenNote,Projects.RowColor
, Projects.HeaderCellText,
 SUM(Calculator.K + Calculator.L + Calculator.M + Calculator.N + Calculator.AD + Calculator.AR) AS sumofTotal
 ,partialBilling.Ammount FROM Projects LEFT JOIN Calculator ON Projects.SpCall=Calculator.AQ
  LEFT JOIN partialBilling ON Projects.SpCall = partialBilling.spCall
   WHERE PmUserName= 'JOHN DOE'AND OpertionalStatus
    <> 'Billed' AND OpertionalStatus<> 'Finished' AND
     OpertionalStatus<> 'Passed To Billing' AND OpertionalStatus<> 'Scanning' 
     AND OpertionalStatus<> 'Ended' 
     AND OpertionalStatus<> 'Green Billing' 
     AND (GeneralStatus= 'Passed To Project Manager' 
     OR GeneralStatus= 'Astrategic Project') 
     GROUP BY Projects.SpCall,Projects.CustName,Projects.CustNumber
     ,Projects.ReceiveDate,Projects.StartDate,Projects.ProjectType
     ,Calculator.AN,Projects.Professional,Projects.PmUserName
     ,Projects.AcountManager,Projects.CrmCallNum,Projects.ProjectCategory
     ,Projects.CallNum,Projects.ContactName,Projects.ContactPhone
     ,Projects.ContactEmail,Projects.HiddenNote,Projects.RowColor
     , Projects.HeaderCellText,partialBilling.Ammount;

最佳答案

最好使用标准 SQL COALESCE,而不是专有的 IFNULL:

SUM(COALESCE(Calculator.K,0) + COALESCE(Calculator.L,0), ...`

或者也许更有效一点:

SUM(COALESCE(Calculator.K,0)) + SUM(COALESCE(Calculator.L,0)), ...`

关于mysql - SQL查询: NULL values that should not be NULL when using aggregate function with left join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36428576/

相关文章:

mysql - SQL - 如何在多个表上使用更多 COUNT?

php - Magento:如何将 'catalog/category' 字段左连接到 'sales/order_item' 集合?

mysql - SQL 语法错误、数字、日期/时间

c# - C# Entity Framework 中Where 子句和foreach 查找的区别

mysql - SQL去除MYSQL中字符串中的零

mysql - 在 MySql 中锁定表

SQL 通过 ADO 在 Delphi 中返回值

mysql - 多个表的简单内部联接出现问题

php - 删除数据库记录 MVC

SQL count 连接不同的多列