2017-12-27 22 views
0

사용자 정의 Apex 컨트롤러를 사용하여 특정 상태의 개체와 다른 개체의 자식 인 SOQL 쿼리를 가져옵니다. 쿼리는 다음과 같습니다.Apex 컨트롤러에서 SObjects 목록에 사용자 정의 SObject 추가

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

Status__c는 선택 목록입니다. 또한 Picklist의 가능한 모든 값을 가져올 코드가 있습니다.

상태가 0이면 값 이름을 추가하기 위해 특정 Status__c 값이있는 항목이 상태에 포함되어 있지 않습니다. 몇 가지 이유로 인해 Status__c와 함께 새 SObject를 만들고 백작, 그것을 좋아하지 않는 것 같습니다. 사용자 정의 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 
} 
: 어쩌면이와 초기 성공은이 같은

뭔가 올바른 방향을 가리켜 야 ... 다음 단계에 실패했다