SOQL文のHAVING
HAVINGではGROUP BYでグルーピングした結果に対して、絞込みの条件を入れることが出来ます。
絞込み条件という意味ではWHEREと似ていますが、WHEREではグルーピングする前、HAVINGはグルーピングした後です。
次のサンプルは商談のリードソースでグルーピングし、同じ値のレコード数が1以上のリードソース別金額を表示します。
AggregateResult[] results = [SELECT LeadSource, SUM(Amount) summary
FROM Opportunity
GROUP BY LeadSource
HAVING Count(LeadSource) > 1];
for(AggregateResult ar: results){
System.debug('LeadSource='+ ar.get('LeadSource')
+ ':Amount='+ ar.get('summary'));
}
デバッグの結果
LeadSource=LeadSource1:Amount=2
LeadSource=LeadSource2:Amount=3