在我的previous question之后,我现在有了以下SQL:
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?
即:
Date Total TimeOutErrors TotalErrors
---------- ----- ------------- -----------
2010-12-06 0 0 0此查询由bcp解析,以便每天使用SQL代理保存到日志文件
发布于 2010-12-07 21:28:33
你需要一个OUTER JOIN
...
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]https://stackoverflow.com/questions/4377054
复制相似问题