首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL GROUP BY with COUNTS -如何在counts为0时始终返回一行

SQL GROUP BY with COUNTS -如何在counts为0时始终返回一行
EN

Stack Overflow用户
提问于 2010-12-07 21:25:04
回答 1查看 1.8K关注 0票数 3

在我的previous question之后,我现在有了以下SQL:

代码语言:javascript
复制
SELECT CONVERT(VARCHAR(10), Date, 120) AS Date, 
       COUNT(*)                        AS Total, 
       COUNT(CASE 
               WHEN ErrorCode = -2 THEN 1 
             END)                      AS TimeOutErrors, 
       COUNT(CASE 
               WHEN ErrorCode IS NOT NULL THEN 1 
             END)                      AS TotalErrors 
FROM   Table 
WHERE  Type = 7 
       AND Date = CONVERT(VARCHAR(10), Dateadd(d, -1, Getdate()), 120) 
GROUP  BY Date

它返回昨天所有类型为7的记录,错误计数为-2和总错误计数。

但是,如果昨天没有类型为7的记录,则返回0行

在这种情况下,有没有可能让它全返回0?

即:

代码语言:javascript
复制
Date       Total TimeOutErrors TotalErrors
---------- ----- ------------- -----------
2010-12-06 0     0             0

此查询由bcp解析,以便每天使用SQL代理保存到日志文件

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-07 21:28:33

你需要一个OUTER JOIN

代码语言:javascript
复制
...
FROM   
(SELECT CONVERT(VARCHAR(10), Dateadd(d, -1, Getdate()), 120) AS [Date]) D
LEFT OUTER JOIN Table T
ON  D.[Date] = T.[Date]  AND T.Type = 7
GROUP BY D.[Date]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4377054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档