GROUP_ID関数は、GROUP BY句によって作成された行グループを問合せ結果セットの中で一意に識別します。
GROUP BYの拡張(たとえばCUBE)を利用すると、複雑な結果セットを作成できますが、この中には重複するグルーピングが含まれることがあります。GROUP_ID関数を使用すると、重複するグルーピングのそれぞれを区別できます。
特定レベルで計算される複数の行集合がある場合、GROUP_IDは最初の集合の行すべてに値0を割り当てます。特定のグルーピングに関する重複行の他の集合にはすべて、1から始まる上位の値が割り当てられます。
つまり、GROUP_IDを利用すると、結果セットから重複するグルーピングを除外できます。たとえば、重複するグルーピングを除外するには、HAVING句の条件GROUP_ID()=0を問合せに追加します。
GROUP_IDは、WHERE句、結合条件、集計関数またはグルーピング属性定義の中で使用できません。
GROUP_ID() AS alias
この関数はパラメータを受け取らないことに注意してください。
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)