需要将几个不同的数据分区连接到单个结果集中时,使用 GROUPING SETS 十分有用。不过,如果要指定多个分组并包括小计,则可能要用到 ROLLUP 和 CUBE 扩展。
ROLLUP 和 CUBE 可视为预定义的 GROUPING SETS 说明的快捷方式。
ROLLUP 等效于指定一系列以空分组集 '()' 开始,依次接续其中将另一表达式与前一表达式相连的分组集的分组集说明。例如,如果有三个分组表达式 a、b 和 c,并且指定 ROLLUP,这就相当于指定具有以下集的 GROUPING SETS 子句:()、(a)、(a, b) 和 (a, b, c )。这种结构有时也称为分层分组。
CUBE 提供的分组更多。指定 CUBE 与指定所有可行的 GROUPING SETS 等效。例如,如果有相同的三个分组表达式 a、b 和 c,并且指定 CUBE,这就相当于指定具有以下集的 GROUPING SETS 子句:()、(a)、(a, b)、(a, c)、(b)、(b, c)、(c) 和 (a, b, c )。
指定 ROLLUP 或 CUBE 时,请使用 GROUPING 函数区分结果中的占位符 NULL,它是由隐含在 ROLLUP 或 CUBE 所形成的结果集中的小计行造成的。
ROLLUP 子句
CUBE 子句
使用 GROUPING 函数检测 NULL
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |