我想按分支和按年计算项目。 我试过这段代码但是没有用。任何帮助表示赞赏。
SELECT COUNT(ProjectIndentID) AS NoOfProjects, BranchID, DATEPART(year, PIDate) AS Expr1
FROM dbo.ProjectIndent
GROUP BY BranchID, PIDate
HAVING (DATEPART(year, PIDate) = '2016')
答案 0 :(得分:1)
您需要group by
年,而不是日期:
SELECT COUNT(ProjectIndentID) AS NoOfProjects, BranchID,
DATEPART(year, PIDate) AS yr
FROM dbo.ProjectIndent
WHERE DATEPART(year, PIDate) = 2016
GROUP BY BranchId, DATEPART(year, PIDate) ;
另外:
having
逻辑应该在where
子句中。最好在聚合之前过滤数据,而不是后缀。DATEPART()
会返回一个整数,因此请使用2016
而不是'2016'
。ORDER BY
。WHERE
子句应该是'WHERE PIDate> =' 2016-01-01' AND PIDate< ' 2017年1月1日&#39 ;.这允许索引用于过滤(如果适用)。