Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Gibt 0 zurück, wenn das Ergebnis leer ist

Vielleicht wollten Sie das (ich behalte offensichtliche Syntax- und Rechtschreibfehler, die ich ohne weitere Informationen nicht wirklich korrigieren kann):

SELECT NumberOfAccedentInYear = ISNULL
(
  (SELECT COUNT(AccedentId)
   FROM         Accident
   GROUP BY DriverId, YEAR(AccedentDate)
   HAVING     (DriverId [email protected])<3))
   , 0
);

Für alle, die neugierig auf die Diskussion zwischen COALESCE und ISNULL sind und warum ich meine Antwort geändert habe, um ISNULL zu verwenden, hat @kanav zu Recht darauf hingewiesen, dass COALESCE teurer ist. COALESCE wertet die Unterabfrage zweimal aus, wie ich hier erklärt habe:https://stackoverflow.com/a/10669660/ 61305