Apex AggregateResult オブジェクトの使い方のサンプル

環境
Salesforce Apex

概要
クエリコールに MAX() などの集計関数が含まれる場合にのみクエリ結果を返す参照のみの SObject。
query() または queryMore() コールに集計関数が含まれる場合にのみ結果が AggregateResult で返されます。
このコールに集計関数が含まれない場合、結果は QueryResult SObject で返されます。

使用例
records 項目で Contact レコードの配列を返します。
SELECT Id, LastName
FROM Contact
WHERE FirstName = 'cft’

項目について
各 AggregateResult オブジェクトには、SELECT リストのアイテムごとに別個の項目が含まれます。
Enterprise WSDL の場合、各アイテムの結果を取得するには、WSC クライアントフレームワークを使用するときに
AggregateResult オブジェクトに対して getField() をコールします。Partner WSDL の場合、
各アイテムの結果を取得するには、オブジェクトに対して getField() をコールします。

Javaコード

public void queryAggregateResult() {
  try {
    String groupByQuery = "SELECT Account.Name n, " + "MAX(Amount) max, MIN(Amount) min " + "FROM Opportunity GROUP BY Account.Name";
    QueryResult qr = connection.query(groupByQuery);
    if (qr.getSize() > 0) {
      System.out.println("Query returned " + 
          qr.getRecords().length +  " results."
      );
      for (SObject sObj : qr.getRecords()) {
        AggregateResult result = (AggregateResult) sObj;
        SystemException ce) {
    ce.printStackTra.out.println("aggResult.Account.Name: " + 
            result.getField("n")
        );
        System.out.println("aggResult.max: " + 
            result.getField("max")
        );
        System.out.println("aggResult.min: " + 
            result.getField("min")
        );
        System.out.println();
      }
    } else {
      System.out.println("No results found.");
    }
    System.out.println("\nQuery successfully executed.");
  } catch (Connectionce();
  }
}

 

IT

Posted by arkgame