sql >> Base de Datos >  >> RDS >> Sqlserver

Devuelve 0 cuando el resultado está vacío

Tal vez querías esto (mantengo errores obvios de sintaxis y ortografía que realmente no puedo corregir sin más información):

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

Para cualquiera que tenga curiosidad sobre la discusión COALESCE vs ISNULL, y por qué cambié mi respuesta para usar ISNULL, @kanav señaló correctamente que COALESCE es más caro. COALESCE evalúa la subconsulta dos veces, como expliqué aquí:https://stackoverflow.com/a/10669660/ 61305