小计和合计报表
2006-03-26 09:58
295 查看
[align=center]小计和合计报表[/align]
在生成包含小计和合计的报表时,ROLLUP 运算符很有用。ROLLUP 运算符生成的结果集类似于 CUBE 运算符生成的结果集。下面是 CUBE 和 ROLLUP 之间的具体区别:
CUBE 生成的结果集显示了所选列中值的所有组合的聚合。
ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。
例如,简单表 Inventory 包含下列数据:
Item Color Quantity -------------------- -------------------- -------------------------- Table Blue 124 Table Red 223 Chair Blue 101 Chair Red 210 以下查询将生成小计报表:
如果将查询中的
和
组合。对于
例如,
ROLLUP 返回单个结果集,而 COMPUTE BY 返回多个结果集,而多个结果集会增加应用程序代码的复杂性。
ROLLUP 可以在服务器游标中使用,而 COMPUTE BY 则不可以。
有时,查询优化器为 ROLLUP 生成的执行计划比为 COMPUTE BY 生成的更为高效。
在生成包含小计和合计的报表时,ROLLUP 运算符很有用。ROLLUP 运算符生成的结果集类似于 CUBE 运算符生成的结果集。下面是 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不仅报告
Color值与
Item值
Chair(
Red、
Blue
和
Red+
Blue)的所有可能组合,还报告
Item值与
Color值
Red(
Chair、
Table和
Chair+
Table)的所有可能
组合。对于
GROUP BY子句的右列中的每个值,
ROLLUP操作并不报告左列中各值的所有可能组合。
例如,
ROLLUP并不报告每个
Color值的
Item值的所有可能组合。ROLLUP 操作的结果集与 COMPUTE BY 返回的结果集具有类似的功能。然而,ROLLUP 具有下列优点:
ROLLUP 返回单个结果集,而 COMPUTE BY 返回多个结果集,而多个结果集会增加应用程序代码的复杂性。
ROLLUP 可以在服务器游标中使用,而 COMPUTE BY 则不可以。
有时,查询优化器为 ROLLUP 生成的执行计划比为 COMPUTE BY 生成的更为高效。
相关文章推荐
- 用SQL实现统计报表中的(小计)和(合计)
- 分组小计合计报表的SQL
- 报表演变历史-多层分组报表-小计合计
- 用SQL实现统计报表中的"小计"与"合计"的方法详解
- 用SQL实现统计报表中的“小计”和“合计”
- 报表演变历史-分组报表-小计合计-其他2
- 用SQL实现统计报表中的“小计”和“合计”
- 报表演变历史-分组报表-小计合计-其他
- 报表的小计、合计
- 用SQL实现统计报表中的"小计"与"合计"的方法详解
- 用SQL实现统计报表中的“小计”和“合计”
- 报表演变历史-分组报表-小计合计
- 用SQL进行报表的小计和合计
- 用SQL实现统计报表中的“小计”和“合计”
- 运用Reporting Service中合计,小计,Pivot等功能快速实现报表
- 用SQL实现统计报表中的“小计”和“合计”
- sql实现报表加小计、合计
- 一条语句轻松写出一个报表(含明细、小计、合计、总计)
- 水晶报表中按页统计字段(即每页小计)最后合计,怎么实现的?
- 用SQL进行报表的小计和合计