3

多くの異なる可能な値を持つ列を持つテーブルがありStatusIDます。私がやろうとしているのは、さまざまな基準の数を生成できる次の形式でレポートを生成することです。

望ましい出力:

Notes | Total | Valid | Invalid | Consults Booked |

合計は、返されたすべての行の数です - 既に以下のクエリにあります

有効なのは、StatusIDでないもの57または42

のカウントは無効です5742

Consults Booked は、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
4

2 に答える 2

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'
于 2013-04-23T13:43:29.907 に答える
2

CASE で集計関数を使用して、他の列を取得できます。

select notes, 
  count(*) as Total,
  sum(case when tLeadStatus.StatusID not in (5, 7, 42) then 1 else 0 end) Valid,
  sum(case when tLeadStatus.StatusID  in (5, 7, 42) then 1 else 0 end) Invalid,
  sum(case when tLeadStatus.StatusID= 4 then 1 else 0 end) ConsultsBooked
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
于 2013-04-23T13:44:32.820 に答える