Query オブジェクトの For each 節では、1 つの軸を使用して分割することにより、データエレメントを複数に分けることができます。
つまり、必要に応じて、Query の結果を値ごとに表示できます。これは、SQL の group by の操作に似ています。構文は以下の要素から構成されます:
for each:
引数:
算術計算式:
まとめると、次のようになります。
<式 1> for each <式 2>
入力値の説明:
- <算術計算式> は分割するデータです。単純な式で定義することも、Aggregate 式 (集計式) で定義することもできます。
- <引数> は値を分割するために使用する軸です。この値は単純な式で定義する必要があります (Aggregate 式は使用できません)。
この節を適用できるシナリオは多数あります。ここでは、単純なシナリオと少し複雑なシナリオを取り上げます。
自動車ディーラーの例で説明します。
各自動車メーカーの売上の合計を求めます。その値を国別に表示します。これを行うため、次のようにクエリ構造を定義します。
# 項目属性
Sum(InvoiceTotal) for each CountryName
CarBrandName
クエリを実行すると、値が次のように表示されます。
このタイプの構文は、次の場合にも役立ちます。
- 項目属性の値が時間とともに動的に変化するとき
- クエリの構造が定義されている場合にその値が不明であるとき
売上の合計の平均値を、各自動車メーカーの合計値 (経時的な国別の値) と比較します。次のように構造を定義します。
# 項目属性
Sum(InvoiceTotal) for each CountryName
Average(InvoiceTotal) by CountryName
Year(InvoiceDate)
結果は次のようになります:
この動作は GeneXus 16 Upgrade 11 以降で利用できます。
|