【发布时间】:2012-11-01 02:57:27
【问题描述】:
我有一张表,Documents,列出了所有文档和有关它们的各种信息。我要做的是,对于一组选定的作者,计算他们在过去一年中创作的所有文档。对于每个文档,我们都有一个列来存储作者姓名和 ID。
我目前正在通过下面的查询得到我想要的,但我的问题是我还需要列出所有尚未创作任何文档的作者。 (因此,对于 Number of Docs Signed 列,它们的值为零)这是我现在所拥有的:
SELECT
[AuthorID] As "Author ID",
RTRIM([AuthorFirstName]) + ' ' + RTRIM([AuthorLastName]) AS "Author",
COUNT(Document.ID) AS "Number of Docs Authored"
FROM Document
WHERE [CompletedStatus] = 'Yes'
AND [AuthorID] IN (<list of author ID's>)
AND [CompletedOn] >= DATEADD(d, -365, getdate())
GROUP BY [AuthorID], [AuthorFirstName], [AuthorLastName]
ORDER BY [Number of Docs Signed] DESC
通过阅读 SO,我知道我认为我需要某种可以加入的子查询,以便在 COUNT 没有返回行时显示“0”。但是对于我的生活,我不知道该怎么做。我很确定它需要类似于this。
【问题讨论】:
标签: sql sql-server tsql join count