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

Requête SELECT avec plusieurs sous-requêtes pour les comptages

Voici un moyen de le faire sans toutes les sous-requêtes

SELECT  Count(r.id) AS cnt_total,
        sum(case when r.action = 'notnow' then 1 else 0 end) as 'cnt_notnow',
        sum(case when r.action = 'insert' then 1 else 0 end) as 'cnt_insert',
        sum(case when r.action = 'update' then 1 else 0 end) as 'cnt_update',
        sum(case when r.action = 'verify' then 1 else 0 end) as 'cnt_verify'        
FROM    auto_reminders_members r

WHERE  r.reminder_id = 1
       AND CONVERT(DATE, r.date_last_reminder) = '20130328'

J'ai également nettoyé un peu la requête, en supprimant le groupe par car ce sera toujours 1, et en modifiant la comparaison de dates pour éviter d'utiliser la logique désordonnée entre (Merci Aaron pour le commentaire)