我有以下 SOQL 查询来显示我的页面块表中的 ABC 列表。
Public List<ABC__c> getABC(){
List<ABC__c> ListABC = [Select WB1__c, WB2__c, WB3__c, Number, tentative__c, Actual__c, PrepTime__c, Forecast__c from ABC__c ORDER BY WB3__c];
return ListABC;
}
如上图所示,WB3 有 A、B 和 C 的记录数。但我想根据 Actual__c 为每个 WB3 组仅显示 1 条记录。每个 WB3 组只能显示最新的 Actual__c。
即,理想情况下,在此示例中,我只想显示 3 行(A、B、C 各一行)。
为此,我使用了 GROUPBY 并使用 AggregateResults 显示结果。这是结果。
如上所示,我得到了每个 WB3 的最新实际日期。但暂定日期不对应。暂定日期也是列表中的 MAX。
这是我使用的代码
public List<SiteMonitoringOverview> getSPM(){
AggregateResult[] AgR = [Select WB_3__c, MAX(Tentaive_Date__c) dtTentativeDate , MAX(Actual_Date__c) LatestCDate FROM Site_progress_Monitoring__c GROUP BY WBS_3__c];
if(AgR.size()>0){
for(AggregateResult SalesList : AgR){
CustSumList.add(new SiteMonitoringOverview(String.ValueOf(SalesList.get('WB_3__c')), String.valueOf(SalesList.get('dtTentativeDate')), String.valueOF(SalesList.get('LatestCDate')) ));
}
}
return CustSumList;
}
我被迫使用MAX()
暂定日期。我想要MAX实际日期的相应暂定日期。不是最大暂定日期。
对于 A 组,暂定日期为Max Actual Date is 12/09/2012
。但它正在显示MAX tentative date: 27/02/2013
. 它应该显示12/09/2012
. 这是因为我MAX(Tentative_Date__c)
在我的代码中使用。SOQL 查询中的每一列都必须是GROUPED
或AGGREGATED
。这很奇怪。
在此示例中如何获得所需的 3 行?
有什么建议么?任何不同的方法(在组内循环)?如何?