2017-12-27 15 views
0

私は、特定のステータスを持ち、別のオブジェクトの子であるすべてのオブジェクトのカウントを取得するカスタムApexコントローラを用意しています。クエリは次のとおりです。ApexコントローラのSObjectのリストにカスタムSObjectを追加します

List<SObject> statuses = [SELECT Status__c, COUNT(Id) statusCount FROM Application__c WHERE CERT__c = :certId GROUP BY Status__c]; 

ステータス__cはPicklistです。また、Picklistの値をすべて取得するコードもあります。

ステータスが0の値の名前を追加するために、ステータスに特定のStatus__c値を持つエントリが含まれていないとします。何らかの理由で、新しいSObjectをStatus__cで作成しようとしました。カウント、それはそれが好きではないようです。カスタムSObjectをリストに追加する方法はありますか?または、これを別の方法で処理する必要がありますか?

答えて

0

私は非常にあなたのクエリが動作して驚いた。 GROUP BYのクエリの結果はAggregateResultですが、sObjectにキャストダウンできるかどうかわかりませんでした。

Map<String, Integer> results = new Map<String, Integer>(); 

for(Schema.PicklistEntry pe : Lead.LeadSource.getDescribe().getPicklistValues()){ 
    results.put(pe.getValue(), 0); 
} 
System.debug('Before: ' + JSON.serializePretty(results)); 

for(AggregateResult ar : [SELECT LeadSource, COUNT(Id) cnt FROM Lead WHERE LeadSource != null GROUP BY LeadSource]){ 
    results.put((String) ar.get('LeadSource'), (Integer) ar.get('cnt'));  
} 
System.debug('After: ' + JSON.serializePretty(results)); 

Before: { 
    "Some more types" : 0, 
    "Hi Stackoverflow!" : 0, 
    "Other" : 0, 
    "Purchased List" : 0, 
    "Partner Referral" : 0, 
    "Phone Inquiry" : 0, 
    "Web" : 0 
} 
After: { 
    "Some more types" : 0, 
    "Hi Stackoverflow!" : 0, 
    "Other" : 0, 
    "Purchased List" : 7, 
    "Partner Referral" : 4, 
    "Phone Inquiry" : 4, 
    "Web" : 7 
} 
:たぶん、これで初期の成功は、あなたがこのような

何かが正しい方向にあなたを指している必要があります...次のステップに失敗製

関連する問題