如何通过branch和year sql server计算记录

时间:2016-06-10 10:51:11

标签: sql sql-server-2008

我想按分支和按年计算项目。 我试过这段代码但是没有用。任何帮助表示赞赏。

SELECT        COUNT(ProjectIndentID) AS NoOfProjects, BranchID, DATEPART(year, PIDate) AS Expr1
FROM            dbo.ProjectIndent
GROUP BY BranchID, PIDate
HAVING        (DATEPART(year, PIDate) = '2016')

1 个答案:

答案 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 ;.这允许索引用于过滤(如果适用)。