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

小計を識別する GROUPING(fieldName) の使用

SOQL クエリで GROUP BY ROLLUP または GROUP BY CUBE を使用する場合、GROUPING(fieldName) 関数を使用して、行が小計か項目かを判別できます。

GROUP BY ROLLUP または GROUP BY CUBE 句によって小計が追加され、GROUPING(fieldName) 関数で行が項目の小計であるかどうかが識別されます。

データのレポートまたはグラフを作成するためにクエリ結果を反復処理する場合、集計データ行と小計行を区別する必要があります。GROUPING(fieldName) を使用してこれを実行できます。GROUPING(fieldName) の使用は、GROUP BY ROLLUP 句または GROUP BY CUBE 句で複数の項目を使用しているときに、結果を解釈する場合に特に重要です。これは集計データと小計を区別するのに最適な方法です。

GROUPING(fieldName) は、その行が項目の小計の場合は 1、それ以外の場合は 0 を返します。GROUPING(fieldName)SELECT 句、HAVING 句、および ORDER BY 句で使用できます。

さらに詳しく理解する最も簡単な方法は、クエリとその結果を確認することです。

1swfobject.registerObject("clippy.codeblock-0", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17SELECT LeadSource, Rating,
18    GROUPING(LeadSource) grpLS, GROUPING(Rating) grpRating,
19    COUNT(Name) cnt
20FROM Lead
21GROUP BY ROLLUP(LeadSource, Rating)

このクエリは、LeadSource 項目と Rating 項目の組み合わせの小計を返します。GROUPING(LeadSource) は、行が LeadSource 項目の集計行であるかどうかを示し、GROUPING(Rating) は行が Rating 項目の集計行であるかどうかを示します。

次の表に、クエリ結果を示します。各行の説明をコメント列に示します。

LeadSource Rating grpLS grpRating cnt コメント
Web null 0 0 5 LeadSource = WebRating なしのリードは 5 件
Web Hot 0 0 1 LeadSource = WebRating = Hot のリードは 1 件
Web Warm 0 0 1 LeadSource = WebRating = Warm のリードは 1 件
Web null 0 1 7 LeadSource = Web のリードの小計は 7 件 (grpRating = 1 は結果が Rating 項目でグループ化されていることを示す)
Phone Inquiry null 0 0 4 LeadSource = Phone InquiryRating なしのリードは 4 件
Phone Inquiry null 0 1 4 LeadSource = Phone Inquiry のリードの小計は 4 件 (grpRating = 1 は結果が Rating 項目でグループ化されていることを示す)
Partner Referral null 0 0 4 LeadSource = Partner ReferralRating なしのリードは 4 件
Partner Referral null 0 1 4 LeadSource = Partner Referral のリードの小計は 4 件 (grpRating = 1 は結果が Rating 項目でグループ化されていることを示す)
Purchased List null 0 0 7 LeadSource = Purchased ListRating なしのリードは 7 件
Purchased List null 0 1 7 LeadSource = Purchased List のリードの小計は 7 件 (grpRating = 1 は結果が Rating 項目でグループ化されていることを示す)
null null 1 1 22 リードの総計は 22 件 (grpRating = 1grpLS = 1 はこれが総計であることを示す)

GROUP BY ROLLUP 句で指定されている項目の順序は重要です。たとえば、各 LeadSource よりも各 Rating の小計を取得する方が重要な場合、項目の順序を GROUP BY ROLLUP(Rating, LeadSource) に変更します。

ヒント