GROUP BY 与 ROLLUP 和 CUBE
ROLLUP 运算符可用于生成包含小计和总计的报表。
-
CUBE 生成一个结果集,显示所选列中所有值组合的聚合。
-
ROLLUP 生成一个结果集,显示所选列中值的层次结构的聚合。
项目 颜色 数量 表 蓝色 124 表 红色 223 椅子 蓝色 101 椅子 红色 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 排受影响)
如果查询中的 ROLLUP 关键字更改为 CUBE,则 CUBE 结果集是相同的,除了在结尾返回这两个额外的行:
ALL Blue 225.00
ALL Red 433.00
https://technet.microsoft.com/en-us/library/ms189305(v=sql.90).aspx