GROUP_ID関数

GROUP_ID関数は、GROUP BY句によって作成された行グループを問合せ結果セットの中で一意に識別します。

GROUP BYの拡張(たとえばCUBE)を利用すると、複雑な結果セットを作成できますが、この中には重複するグルーピングが含まれることがあります。GROUP_ID関数を使用すると、重複するグルーピングのそれぞれを区別できます。

特定レベルで計算される複数の行集合がある場合、GROUP_IDは最初の集合の行すべてに値0を割り当てます。特定のグルーピングに関する重複行の他の集合にはすべて、1から始まる上位の値が割り当てられます。

つまり、GROUP_IDを利用すると、結果セットから重複するグルーピングを除外できます。たとえば、重複するグルーピングを除外するには、HAVING句の条件GROUP_ID()=0を問合せに追加します。

GROUP_IDの構文

GROUP_IDは、WHERE句、結合条件、集計関数またはグルーピング属性定義の中で使用できません。

GROUP_IDの構文は次のとおりです。
GROUP_ID() AS alias

この関数はパラメータを受け取らないことに注意してください。

GROUP_IDの例

DEFINE r AS SELECT
  DimReseller_AnnualRevenue AS Revenue,
  DimReseller_AnnualSales AS Sales,
  DimReseller_OrderMonth AS OrderMonth;

RETURN results AS SELECT
  COUNT(1) AS COUNT,
  GROUP_ID() AS gid,
  GROUPING(Revenue) AS grouping_Revenue,
  GROUPING(Sales) AS grouping_Sales,
  GROUPING(OrderMonth) AS grouping_OrderMonth
FROM r
GROUP BY OrderMonth, ROLLUP(Revenue,Sales)