2016-06-10 4 views
0

zählen Ich möchte Projekte nach Branche und Jahr zählen. Ich habe diesen Code versucht, funktioniert aber nicht. Jede Hilfe wird geschätzt.Wie Datensätze nach Branche und Jahr sql Server

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

Antwort

1

Sie müssen group by das Jahr, nicht das Datum:

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) ; 

Zusätzlich:

  • Die having Logik wirklich in einer where Klausel sein sollte. Es ist besser, die Daten vor Aggregation zu filtern, als danach.
  • DATEPART() gibt eine Ganzzahl zurück, verwenden Sie also 2016 statt '2016'.
  • Sie möchten wahrscheinlich eine ORDER BY.
  • Die WHERE Klausel sollte wirklich `WHERE PIDate> = '2016-01-01' und PIDate < '2017-01-01' sein. Dies ermöglicht die Verwendung eines Indexes für die Filterung (falls zutreffend).
Verwandte Themen