sql >> Database >  >> RDS >> Sqlserver

Retourneer 0 wanneer het resultaat leeg is

Misschien wilde je dit (ik houd voor de hand liggende syntaxis- en spelfouten die ik niet echt kan corrigeren zonder meer informatie):

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

Voor iedereen die nieuwsgierig is naar de COALESCE vs ISNULL-discussie en waarom ik mijn antwoord heb gewijzigd om ISNULL te gebruiken, heeft @kanav er terecht op gewezen dat COALESCE duurder is. COALESCE evalueert de subquery twee keer, zoals ik hier heb uitgelegd:https://stackoverflow.com/a/10669660/ 61305




  1. Mislukte configuratie van MySQL-serverinstallatie

  2. Filter tussen twee datums MYSQL

  3. Logische replicatiepartitionering met PostgreSQL 13

  4. Speciale tekens gaan verloren bij het exporteren/importeren van MySQL