この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

GROUP BY ROLLUP

クエリ結果の集計データについて小計を追加するには、SOQL クエリで GROUP BY ROLLUP 句 (省略可能) を使用します。このアクションによりクエリで小計を計算できるため、コード内にそのロジックを含める必要はありません。

API バージョン 18.0 以降では、GROUP BY ROLLUPSUM()COUNT(fieldName) などの 集計関数と共に使用できます。構文は次のとおりです。

1[GROUP BY ROLLUP (fieldName[,...])]

GROUP BY ROLLUP 句を使用するクエリは、GROUP BY 句を使用する同等のクエリと同じ集計データを返します。また、複数レベルの小計行も返します。GROUP BY ROLLUP 句には、カンマ区切りのリストで 3 つの項目まで含めることができます。

GROUP BY ROLLUP 句は、グルーピング列のリスト全体を右から左に集計し、異なるレベルの小計を追加します。積み上げ集計項目の順序は重要です。3 つの積み上げ集計項目を含むクエリは次の合計行を返します。

  • fieldName1fieldName2 の各組み合わせの第 1 レベルの小計。結果は fieldName3 でグループ化されます。
  • fieldName1 の各値の第 2 レベルの小計。結果は fieldName2fieldName3 でグループ化されます。
  • 1 つの総計行。
  • 同じステートメント内で GROUP BYGROUP BY ROLLUP 構文を組み合わせることはできません。たとえば、グループ化されたすべての項目は括弧で囲む必要があるため、GROUP BY ROLLUP(field1), field2 は無効です。
  • GROUP BY 句で項目の考えられるすべての組み合わせの小計を含むクロス表形式レポートを作成する場合は、代わりに GROUP BY CUBE を使用します。

メモ

1 つの積み上げ集計項目によるグループ化

この単純な例では、1 つの項目で結果を積み上げ集計します。

1SELECT LeadSource, COUNT(Name) cnt
2FROM Lead
3GROUP BY ROLLUP(LeadSource)

次の表に、クエリ結果を示します。集計された結果には、すべてのグルーピングの総計を返す、LeadSourcenull 値の追加行が含まれます。積み上げ集計項目は 1 つのみのため、その他の小計はありません。

LeadSource cnt
Web 7
Phone Inquiry 4
Partner Referral 4
Purchased List 7
null 22

2 つの積み上げ集計項目によるグループ化

この例では、2 つの項目で結果を積み上げ集計します。

1SELECT Status, LeadSource, COUNT(Name) cnt
2FROM Lead
3GROUP BY ROLLUP(Status, LeadSource)

次の表に、クエリ結果を示します。第 1 レベルの小計行と総計行に注目してください。各行の説明をコメント列に示します。

状況 LeadSource cnt コメント
Open - Not Contacted Web 1 Status = Open - Not ContactedLeadSource = Web のリードは 1 件
Open - Not Contacted Phone Inquiry 1 Status = Open - Not ContactedLeadSource = Phone Inquiry のリードは 1 件
Open - Not Contacted Purchased List 1 Status = Open - Not ContactedLeadSource = Purchased List のリードは 1 件
Open - Not Contacted null 3 Status = Open - Not Contacted のすべてのリードの第 1 レベルの小計
Working - Contacted Web 4 Status = Working - ContactedLeadSource = Web のリードは 4 件
Working - Contacted Phone Inquiry 1 Status = Working - ContactedLeadSource = Phone Inquiry のリードは 1 件
Working - Contacted Partner Referral 3 Status = Working - ContactedLeadSource = Partner Referral のリードは 3 件
Working - Contacted Purchased List 4 Status = Working - ContactedLeadSource = Purchased List のリードは 4 件
Working - Contacted null 12 Status = Working - Contacted のすべてのリードの第 1 レベルの小計
Closed - Converted Web 1 Status = Closed - ConvertedLeadSource = Web のリードは 1 件
Closed - Converted Phone Inquiry 1 Status = Closed - ConvertedLeadSource = Phone Inquiry のリードは 1 件
Closed - Converted Purchased List 1 Status = Closed - ConvertedLeadSource = Purchased List のリードは 1 件
Closed - Converted null 3 Status = Closed - Converted のすべてのリードの第 1 レベルの小計
Closed - Not Converted Web 1 Status = Closed - Not ConvertedLeadSource = Web のリードは 1 件
Closed - Not Converted Phone Inquiry 1 Status = Closed - Not ConvertedLeadSource = Phone Inquiry のリードは 1 件
Closed - Not Converted Partner Referral 1 Status = Closed - Not ConvertedLeadSource = Partner Referral のリードは 1 件
Closed - Not Converted Purchased List 1 Status = Closed - Not ConvertedLeadSource = Purchased List のリードは 1 件
Closed - Not Converted null 4 Status = Closed - Not Converted のすべてのリードの第 1 レベルの小計
null null 22 リードの総計は 22 件

これらの例では COUNT(fieldName) 集計関数を使用していますが、この構文には任意の集計関数を使用できます。また、3 つの積み上げ集計項目でグループ化してさらに多くの小計行を返すこともできます。