ROLLUP和CUBE 的组合中,它们都限定了组合方式。例如ROLLUP(a,b)的组合方式有:(a.b)、()和( ): CUBE(a,b)的组合方式有:(a,b)、(a)、(b)和0。使用 GROUPING SETS实现灵活地进行组合,只取其中的某组或某几组进行分组汇总
例如只取(a,b)和(b)进行汇总,可以写成GROUPING SETS((ab),b)。
CUBE(a,b,c)等价于GROUPING SETS((a,b,c),(a,b),(a,c),(b,c),(a),(b).(C),0).
ROLLUP(a,b,c)等价于GROUPING SETS((a,b,c),(a,b),(a),0)。
只需要汇总个人工资明细及个人工资总额
SELECT a.employee_name, b.salary_type ,sum(b.salary) FROM employee a
INNER JOIN salary b
ON a.employee_id = b.employee_id
GROUP BY GROUPING SETS((a.employee_name,b.salary_type),(a.employee_name))
学习参考资料:《跟韩老师学 SQL Server 数据库设计与开发》