SQL - 如何计算一列中多次出现的值

mar*_*n87 3 sql sql-server-2008

我有一个StatusID具有许多不同可能值的列的表,我想要做的是生成以下格式的报告,该报告能够生成各种条件的计数.

期望的输出:

Notes | Total | Valid | Invalid | Consults Booked |
Run Code Online (Sandbox Code Playgroud)

Total是返回的所有行的计数 - 已在下面的查询中

有效是任何StatusID不是5,742

是无效的计数5,742

预约的咨询是计数 4

(无效+有效应等于总计)

到目前为止,我只能设法得到Total,我不知道如何使用IF或其他任何东西确定其他值.

查询到目前为止

select notes, tLeadStatus.Status, tLeadStatus.StatusID,
       count(*) as Total from LeadManagement.dbo.tLead with (NOLOCK)
left join LeadManagement.dbo.tInternetLead on tLead.Leadid = tinternetlead.leadid
left join LeadManagement..tLeadStatus on tLeadStatus.StatusID = tLead.Status
where (CampaignID = '12327')
  and (registerdate >= '2013-03-01' and registerdate < '2013-04-01')
group by notes,tLeadStatus.StatusID,tLeadStatus.Status
Run Code Online (Sandbox Code Playgroud)

Aus*_*hin 9

SUM(CASE WHEN StatusID NOT IN (5, 7, 42) THEN 1 ELSE 0 END) AS Valid,
SUM(CASE WHEN StatusID IN (5, 7, 42) THEN 1 ELSE 0 END) AS Invalid,
SUM(CASE WHEN StatusId = 4 THEN 1 ELSE 0 END) AS 'Consults Booked'
Run Code Online (Sandbox Code Playgroud)