2015-09-04 39 views
0

好吧,我擁有的是縣名單。我想要做的是獲得縣的客戶數。不過,我只需要三個主要縣,然後將其他所有內容組合爲「其他」類別。SQL自定義按值分組

select county,COUNT(*) 
from person 
where person_id in (select distinct person_id from person_encounter) 
and create_timestamp >= CONVERT(datetime,'2015-08-01') 
and create_timestamp <= CONVERT(datetime,'2015-08-31') 
group by county 

是我所得到的所有縣的計數就好了。但我怎麼組臨時演員到「其他」

+0

如果你想在結果中使用8月份的全部內容,你可能還需要'和create_timestamp <'2015-09-01''。 –

+0

@ypercube這最終將被一個變量替換,但是你是正確的。 – mmicchia

回答

2

試試這個

select 
    CASE county 
     WHEN 'County1' THEN 'County1' 
     WHEN 'County2' THEN 'County2' 
     WHEN 'County3' THEN 'County3' 
    ELSE 'Other' END AS County 
    ,COUNT(*) 
from person 
where person_id in (select distinct person_id from person_encounter) 
    and create_timestamp >= CONVERT(datetime,'2015-08-01') 
    and create_timestamp <= CONVERT(datetime,'2015-08-31') 
group by 
    CASE county 
     WHEN 'County1' THEN 'County1' 
     WHEN 'County2' THEN 'County2' 
     WHEN 'County3' THEN 'County3' 
    ELSE 'Other' END ; 
+0

當我運行時,我得到的錯誤:不能在用於GROUP BY子句的group by列表的表達式中使用聚合或子查詢。 – mmicchia

0

2個怎麼樣查詢1 =你的主要3個縣,即心不是你的主要3個縣第2 =一切的UNION

select county, COUNT(*) 
from person 
where person_id in (select distinct person_id from person_encounter) 
and create_timestamp >= CONVERT(datetime,'2015-08-01') 
and create_timestamp <= CONVERT(datetime,'2015-08-31') 
and county in ('1','2','3') 
group by county 
UNION ALL 
select 'other' AS county, COUNT(*) 
from person 
where person_id in (select distinct person_id from person_encounter) 
and create_timestamp >= CONVERT(datetime,'2015-08-01') 
and create_timestamp <= CONVERT(datetime,'2015-08-31') 
and county not in ('1','2','3')