90.UNION ALL 实现的分级汇总案例

本文详细介绍了一种使用SQL进行复杂数据统计与汇总的方法,通过创建临时表并使用UNION ALL和子查询来实现明细、各分类合计及总合计的统计,适用于需要对大量数据进行快速统计分析的场景。
DECLARE @t TABLE(Item varchar(10),Color varchar(10),Quantity int)
INSERT @t SELECT 'Table','Blue',124
UNION ALL SELECT 'Table','Red', -23
UNION ALL SELECT 'Chair','Blue',101
UNION ALL SELECT 'Chair','Red', -90

--统计
SELECT Item,Color,Quantity
FROM(
	--明细
	SELECT Item,Color,Quantity=SUM(Quantity)
		,s1=0,s2=Item,s3=0
	FROM @t
	GROUP BY Item,Color
	UNION ALL
	--各Item合计
	SELECT '',Item+' 合计',Quantity=SUM(Quantity)
		,s1=0,s2=Item,s3=1
	FROM @t
	GROUP BY Item
	UNION ALL
	--总计
	SELECT '总计','',Quantity=SUM(Quantity)
		,s1=1,s2='',s3=1
	FROM @t
)a ORDER BY s1,s2,s3
/*--结果
Item       Color           Quantity
-------------- ---------------------- ----------- 
Chair      Blue            101
Chair      Red             -90
          Chair 合计       11
Table      Red             -23
Table      Blue            124
          Table 合计       101
总计                      112
--*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值