计数返回空白而不是0

Alb*_*ure 13 sql t-sql sum count sql-server-2008-r2

大家好,这里的每个人都是我的代码

SELECT 
    'Expired Item -'+ DateName(mm,DATEADD(MM,4,AE.fld_LOAN)) as [Month]
    ,COUNT(PIT.fld_ID)'COUNT'
    ,SUM (PIT.fld_GRAM)'GRAMS'
    ,SUM (PH.fld_AMNT)'PRINCIPAL'
FROM  #AllExpired AE
    INNER JOIN Transactions.tbl_ITEM PIT
    ON AE.fld_MAINID=PIT.fld_MAINID
    INNER JOIN Transactions.tbl_HISTO PH
    ON AE.fld_MAINID =PH.fld_MAINID
GROUP BY DATENAME(MM,(DATEADD(MM,4,AE.fld_LOAN)))
Run Code Online (Sandbox Code Playgroud)

我面临的问题是我的Count函数如果没有值则不返回0,如果没有检索到结果值,则Sum函数不返回NULL,而是只输出空白,为什么会这样?我该如何解决?

这是一个示例输出的屏幕截图

一个

当然这不是我想要它输出零和空值.请帮帮我,我不知道什么是错的.谢谢.

Dan*_*Dan 18

当您的源中没有记录时,使用GROUP BY子句时不能指望输出任何记录.

如果希望SUM和COUNT函数输出0,则不应使用GROUP BY.

原因是当你没有记录时,GROUP BY子句没有任何分组,然后无法给你任何输出.

例如:

SELECT COUNT(*) FROM (SELECT 'Dummy' AS [Dummy] WHERE 1 = 0) DummyTable
Run Code Online (Sandbox Code Playgroud)

将返回一个值为'0'的记录,其中:

SELECT COUNT(*) FROM (SELECT 'Dummy' AS [Dummy] WHERE 1 = 0) DummyTable
GROUP BY [Dummy]
Run Code Online (Sandbox Code Playgroud)

将不会返回任何记录.