Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SELECT заявка с множество подзаявки за преброяване

Ето начин да направите това без всички подзаявки

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'

Също така почистих малко заявката, като премахнах групата от, тъй като това винаги ще бъде 1, и промених сравнението на дати, за да избегна използването на обърканата логика между (Благодаря на Аарон за коментара)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обяснено за всеки оператор на SQL Server

  2. Вмъкнете varbinary данни в базата данни на SQL Server

  3. LOG() Примери в SQL Server

  4. Екранирането на екраниращия знак не работи – SQL LIKE оператор

  5. Премахване на повтарящи се дублирани знаци