WITH CUBE、WITH ROLLUP(MSSQL)

SQL中WITH CUBE、WITH ROLLUP的用法:

①WITH CUBE:生成GROUP BY中字段所有可能组合的统计

②WITH ROLLUP:生成GROUP BY中字段类似于SUBTOTAL、TOTAL的统计

其中,通过GROUPING(列名)来区分数据时原有的还是增加的统计数据。

DECLARE @t TABLE
(
	年份 SMALLINT,
	月份 SMALLINT,
	费用类别 NVARCHAR(50),
	金额 DECIMAL(18,2)
)

INSERT @t
SELECT 2013,8,'制造费用',1000 UNION ALL
SELECT 2013,8,'制造费用',2000 UNION ALL
SELECT 2013,8,'管理费用',3000 UNION ALL
SELECT 2013,8,'管理费用',4000 UNION ALL
SELECT 2013,8,'销售费用',4500 UNION ALL

SELECT 2013,9,'制造费用',5000 UNION ALL
SELECT 2013,9,'制造费用',6000 UNION ALL
SELECT 2013,9,'管理费用',7000 UNION ALL
SELECT 2013,9,'管理费用',7500 UNION ALL
SELECT 2013,9,'销售费用',8000 UNION ALL
SELECT 2013,9,'财务费用',9000 

SELECT
	t.年份,
	t.月份,
	t.费用类别,
	SUM(t.金额) AS 金额
FROM @t t
GROUP BY
	t.年份,
	t.月份,
	t.费用类别
WITH ROLLUP--生成GROUP BY中字段类似于SUBTOTAL、TOTAL的统计

SELECT
	t.年份,
	t.月份,
	t.费用类别,
	SUM(t.金额) AS 金额
FROM @t t
GROUP BY
	t.年份,
	t.月份,
	t.费用类别
WITH CUBE--生成GROUP BY中字段所有可能组合的统计


WITH ROLLUP的结果

年份 月份 费用类别 金额
2013 8 管理费用 7000.00
2013 8 销售费用 4500.00
2013 8 制造费用 3000.00
2013 8 NULL 14500.00
2013 9 财务费用 9000.00
2013 9 管理费用 14500.00
2013 9 销售费用 8000.00
2013 9 制造费用 11000.00
2013 9 NULL 42500.00
2013 NULL NULL 57000.00
NULL NULL NULL 57000.00

WITH CUBE的结果

年份 月份 费用类别 金额
2013 9 财务费用 9000.00
NULL 9 财务费用 9000.00
NULL NULL 财务费用 9000.00
2013 8 管理费用 7000.00
NULL 8 管理费用 7000.00
2013 9 管理费用 14500.00
NULL 9 管理费用 14500.00
NULL NULL 管理费用 21500.00
2013 8 销售费用 4500.00
NULL 8 销售费用 4500.00
2013 9 销售费用 8000.00
NULL 9 销售费用 8000.00
NULL NULL 销售费用 12500.00
2013 8 制造费用 3000.00
NULL 8 制造费用 3000.00
2013 9 制造费用 11000.00
NULL 9 制造费用 11000.00
NULL NULL 制造费用 14000.00
NULL NULL NULL 57000.00
2013 NULL 财务费用 9000.00
2013 NULL 管理费用 21500.00
2013 NULL 销售费用 12500.00
2013 NULL 制造费用 14000.00
2013 NULL NULL 57000.00
2013 8 NULL 14500.00
NULL 8 NULL 14500.00
2013 9 NULL 42500.00
NULL 9 NULL 42500.00

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值