使用SQL计数(*)和分组依据显示,包括零

使用SQL计数(*)和分组依据显示,包括零,sql,Sql,对于此查询,我希望使用SQL计数(*)显示记录零,下面的group by是我的SQL查询: SELECT B.BranchName as Filter, Coalesce(COUNT(*), '0') AS NoofSplits, SUM(ls.Amount) AS TotalLoanValue FROM dbo.tblBranch B LEFT OUTER JOIN dbo.tblLoan L ON L.BranchID = B.Branc

对于此查询,我希望使用SQL计数(*)显示记录零,下面的group by是我的SQL查询:

SELECT  B.BranchName as Filter,
Coalesce(COUNT(*), '0')   AS NoofSplits,
SUM(ls.Amount) AS TotalLoanValue
FROM    dbo.tblBranch B                     
LEFT OUTER JOIN dbo.tblLoan L ON L.BranchID = B.BranchID
LEFT OUTER JOIN dbo.tblLoanSplit LS ON L.LoanID = LS.LoanID
WHERE  LS.DateSettlement BETWEEN @StartDate AND @EndDate
GROUP BY B.BranchName
ORDER BY B.BranchName
在执行外部联接时不要使用
COUNT(*)
,如果没有要联接的行,这将返回1个svn。在您的情况下,必须计算外部表的联接列:

SELECT  B.BranchName as Filter,
    COUNT(LS.LoanID)   AS NoofSplits,
SUM(ls.Amount) AS TotalLoanValue
FROM    dbo.tblBranch B                     
LEFT OUTER JOIN dbo.tblLoan L ON L.BranchID = B.BranchID
LEFT OUTER JOIN dbo.tblLoanSplit LS ON L.LoanID = LS.LoanID
WHERE  LS.DateSettlement BETWEEN @StartDate AND @EndDate
GROUP BY B.BranchName
ORDER BY B.BranchName

你有什么错误吗?如果是,请注明。您使用的RDBMS是什么?从何处获取分支机构名称的最终列表?或者您希望它生成适合该列的数据类型的所有可能字符串,并为每个字符串列出0吗?这会产生很多噪音。
Coalesce
Coalesce(COUNT(*),“0”)一样,没有任何意义,因为
COUNT(*)
从不返回
null
。您能否提供一小部分示例数据来说明问题?