Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kembalikan 0 saat hasilnya kosong

Mungkin Anda menginginkan ini (saya menyimpan kesalahan sintaks dan ejaan yang jelas yang tidak dapat saya perbaiki tanpa informasi lebih lanjut):

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

Bagi siapa pun yang ingin tahu tentang diskusi COALESCE vs ISNULL, dan mengapa saya mengubah jawaban saya untuk menggunakan ISNULL, @kanav dengan tepat menunjukkan bahwa COALESCE lebih mahal. COALESCE mengevaluasi subquery dua kali, seperti yang saya jelaskan di sini:https://stackoverflow.com/a/10669660/ 61305




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tampilan di SQL Server

  2. Apakah ada perbedaan antara SQL Server Express (2012) dan LocalDB?

  3. Mengoptimalkan Hapus di SQL Server

  4. SQL Server 2008 -- jalankan kueri secara paralel

  5. dapatkan string yang dipisahkan koma dari baris