我已经想出CUBE只是产生所有的排列,但我有ROLLUP的麻烦.在线阅读这本书似乎没有任何好的资源,为了解释sql,像我这样的人一起努力解决sql.
我的书说,ROLLUP是CUBE操作符的一个特殊情况,排除了结果中不遵循层次结构的所有情况.
我不完全确定这是什么意思,但是在我所做的表上运行它会产生一些有用的结果.
我从谷歌的另一个页面做了一个表,就像这样:
Type Store Number Dog Miami 12 Cat Miami 18 Turtle Tampa 4 Dog Tampa 14 Cat Naples 9 Dog Naples 5 Turtle Naples 1
那么这里是我做的查询:
select store,[type],SUM(number) as Number from pets group by store,[type] with rollup
这显示了每个商店中每种类型的宠物的数量,以及每个商店中的宠物总数,这是一个很酷的.如果我想看到基于宠物的查询,我发现我必须按顺序切换组,所以类型先到.
那么根据第一组by子句汇总?
另一个问题是,我读了你使用ROLLUP而不是CUBE,当你有一个年和月的列停止它在多个年份聚合同一个月.我想我明白这是什么意思,但是任何人都可以澄清一下吗?你怎么设置这样?
您可以使用ROLLUP来排除列的其他组合吗?我上面的表格很简单,查询会显示“宠物商店”,但是如果有其他列,你可以从结果中包含/排除它们吗?
解决方法
最好通过一个例子解释.假设您由A,B,C分组.然后,您可以通过汇总获得以下分组:
(A,C) (A,B) (A) ()
所以你看到这个顺序很重要,就像你已经发现的那样.如果您按A,C,B分组,则可以获得以下分组:
(A,B) (A,C) (A) ()