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

GROUP BY CUBE

クエリ結果のグループ化項目のすべての組み合わせについて小計を追加するには、SOQL クエリで GROUP BY CUBE 句を使用します。このアクションは、データのクロス表形式レポートを作成するときに役立ちます。たとえば、クロス表クエリを作成して、合計、平均、または別の集計関数の計算を行ってから、2 つの値セット (横方向と縦方向) で結果をグループ化できます。

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

構文は次のとおりです。

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

GROUP BY CUBE 句を使用するクエリは、GROUP BY 句を使用する同等のクエリと同じ集計データを返します。さらに、カンマ区切りのグルーピングリストで指定された項目の各組み合わせの追加小計行および総計行を返します。GROUP BY CUBE 句には、3 つの項目まで含めることができます。

  • 同じステートメント内で GROUP BYGROUP BY CUBE 構文を組み合わせることはできません。たとえば、グループ化されたすべての項目は括弧で囲む必要があるため、GROUP BY CUBE(field1), field2 ��無効です。
  • グループ化された項目の組み合わせのサブセットで小計のみが必要な場合は、代わりに GROUP BY ROLLUP を使用します。

メモ

次のクエリは、TypeBillingCountry の各組み合わせでの取引先の小計を返します。

1SELECT Type, BillingCountry,
2    GROUPING(Type) grpType, GROUPING(BillingCountry) grpCty,
3    COUNT(id) accts
4FROM Account
5GROUP BY CUBE(Type, BillingCountry)
6ORDER BY GROUPING(Type), GROUPING(BillingCountry)

次の表に、クエリ結果を示します。このクエリは、集計データ行の後に小計行と総計行が返されるように ORDER BY GROUPING(Type), GROUPING(BillingCountry) を使用しています。これは必須ではありませんが、コードのクエリ結果を反復処理するときに役立ちます。各行の説明をコメント列に示します。

Type BillingCountry grpType grpCty accts コメント
Customer - Direct null 0 0 6 Type = Customer - DirectBillingCountry = null の取引先は 6 件
Customer - Channel USA 0 0 1 Type = Customer - ChannelBillingCountry = USA の取引先は 1 件
Customer - Channel null 0 0 2 Type = Customer - ChannelBillingCountry = null の取引先は 2 件
Customer - Direct USA 0 0 1 Type = Customer - DirectBillingCountry = USA の取引先は 1 件
Customer - Channel France 0 0 1 Type = Customer - ChannelBillingCountry = France の取引先は 1 件
null USA 0 0 1 Type = nullBillingCountry = USA の取引先は 1 件
Customer - Channel null 0 1 4 Type = Customer - Channel の取引先の小計は 4 件 (grpCty = 1 は結果が BillingCountry 項目でグループ化されていることを示す)
Customer - Direct null 0 1 7 Type = Customer - Direct の取引先の小計は 7 件 (grpCty = 1 は結果が BillingCountry 項目でグループ化されていることを示す)
null null 0 1 1 Type = null の取引先の小計は 1 件 (grpCty = 1 は結果が BillingCountry 項目でグループ化されていることを示す)
null France 1 0 1 BillingCountry = France の取引先の小計は 1 件 (grpType = 1 は結果が Type 項目でグループ化されていることを示す)
null USA 1 0 3 BillingCountry = USA の取引先の小計は 3 件 (grpType = 1 は結果が Type 項目でグループ化されていることを示す)
null null 1 0 8 BillingCountry = null の取引先の小計は 8 件 (grpType = 1 は結果が Type 項目でグループ化されていることを示す)
null null 1 1 12 取引先の総計は 12 件 (grpType = 1grpCty = 1 はこれが総計であることを示す)

これらのクエリ結果を使用して、結果のクロス表形式レポートを表示できます。

Type/BillingCountry USA France null 合計
Customer - Direct 1 0 6 7
Customer - Channel 1 1 2 4
null 1 0 0 1
合計 3 1 8 12