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删除了本周没有任何案例的所有人,因此我不确定如何仍然包含它们.
提前致谢.
一种方法是将条件逻辑放在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)