即使count为零,也包括行

PWL*_*PWL 0 sql sql-server sql-server-2008

我列出了每个人在一张桌子上有多少案例.我想包括所有有案例的人(没有单独的用户表),即使他们本周没有案例.

我目前的结果:

PERSON  CASES
Jerry   1
Tom     1
Run Code Online (Sandbox Code Playgroud)

我在寻找什么:

PERSON  CASES
Jerry   1
Tom     1
Spike   0
Run Code Online (Sandbox Code Playgroud)

我正在运行的查询:

DECLARE @now DATETIME = GETDATE()

SELECT PERSON, COUNT(CASES)
FROM TASKS
WHERE CASEDATE > CONVERT(DATE, DATEADD(dd, -(DATEPART(dw, @now)-1), @now))
GROUP BY PERSON
ORDER BY PERSON
Run Code Online (Sandbox Code Playgroud)

如你所见,我的where-clause删除了本周没有任何案例的所有人,因此我不确定如何仍然包含它们.

提前致谢.

Dam*_*ver 7

一种方法是将条件逻辑放在CASE聚合内部:

DECLARE @now DATETIME = GETDATE()

SELECT PERSON, SUM(CASE
            WHEN CASEDATE > CONVERT(DATE, DATEADD(dd, -(DATEPART(dw, @now)-1), @now))
                 THEN 1 ELSE 0 END)
FROM TASKS
GROUP BY PERSON
ORDER BY PERSON
Run Code Online (Sandbox Code Playgroud)