Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Renvoie 0 lorsque le résultat est vide

Peut-être que vous vouliez ceci (je garde des fautes de syntaxe et d'orthographe évidentes que je ne peux pas vraiment corriger sans plus d'informations) :

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

Pour toute personne curieuse de la discussion COALESCE vs ISNULL, et pourquoi j'ai changé ma réponse pour utiliser ISNULL, @kanav a souligné à juste titre que COALESCE est plus cher. COALESCE évalue la sous-requête deux fois, comme je l'ai expliqué ici :https://stackoverflow.com/a/10669660/ 61305