在GROUP BY子句中的CUBE与ROLLUP是否完全一样?

blueshrimp 2002-12-15 01:23:30
我只用过ROLLUP,今天见到了CUBE,乍一看结果一样,书上也是这么写的,不知在高级应用中是否会有较大的差别?
...全文
107 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CoolAbu 2002-12-17
  • 打赏
  • 举报
回复
Nod...

Studying...
blueshrimp 2002-12-17
  • 打赏
  • 举报
回复
晕,在查询分析器里可以运行,在企业管理器中不能运行,在Delphi环境中也可以运行


没办法,只能下次尽量用查询分析器了
blueshrimp 2002-12-17
  • 打赏
  • 举报
回复
跟SQLServer2000联机手册讲的一样,但我仍然无法运行,不知为何呢?

grouping函数经过测试,可行,语句简化成如下也能运行

SELECT GROUPING(Item) AS Expr1, Item, SUM(Quantity) AS QtySum
FROM Inventory
GROUP BY Item WITH ROLLUP

但完全贴过来,就不能执行了
blueshrimp 2002-12-17
  • 打赏
  • 举报
回复
多谢

正在研究。

有用就结贴
pengdali 2002-12-15
  • 打赏
  • 举报
回复
CUBE 和 ROLLUP 之间的区别在于:

CUBE 生成的结果集显示了所选列中值的所有组合的聚合。


ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。
例如,简单表 Inventory 中包含:

Item Color Quantity
-------------------- -------------------- --------------------------
Table Blue 124
Table Red 223
Chair Blue 101
Chair Red 210

下列查询将生成小计报表:

SELECT CASE WHEN (GROUPING(Item) = 1) THEN 'ALL'
ELSE ISNULL(Item, 'UNKNOWN')
END AS Item,
CASE WHEN (GROUPING(Color) = 1) THEN 'ALL'
ELSE ISNULL(Color, 'UNKNOWN')
END AS Color,
SUM(Quantity) AS QtySum
FROM Inventory
GROUP BY Item, Color WITH ROLLUP

Item Color QtySum
-------------------- -------------------- --------------------------
Chair Blue 101.00
Chair Red 210.00
Chair ALL 311.00
Table Blue 124.00
Table Red 223.00
Table ALL 347.00
ALL ALL 658.00

(7 row(s) affected)

如果查询中的 ROLLUP 关键字更改为 CUBE,那么 CUBE 结果集与上述结果相同,只是在结果集的末尾还会返回下列两行:

ALL Blue 225.00
ALL Red 433.00

CUBE 操作为 Item 和 Color 中值的可能组合生成行。例如,CUBE 不仅报告与 Item 值 Chair 相组合的 Color 值的所有可能组合(Red、Blue 和 Red + Blue),而且报告与 Color 值 Red 相组合的 Item 值的所有可能组合(Chair、Table 和 Chair + Table)。

对于 GROUP BY 子句中右边的列中的每个值,ROLLUP 操作并不报告左边一列(或左边各列)中值的所有可能组合。例如,ROLLUP 并不对每个 Color 值报告 Item 值的所有可能组合。

ROLLUP 操作的结果集具有类似于 COMPUTE BY 所返回结果集的功能;然而,ROLLUP 具有下列优点:

ROLLUP 返回单个结果集;COMPUTE BY 返回多个结果集,而多个结果集会增加应用程序代码的复杂性。


ROLLUP 可以在服务器游标中使用;COMPUTE BY 不可以。


有时,查询优化器为 ROLLUP 生成的执行计划比为 COMPUTE BY 生成的更为高效。

34,870

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧