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)
将不会返回任何记录.