了解SQL中的ROLLUP

前端之家收集整理的这篇文章主要介绍了了解SQL中的ROLLUP前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经想出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)
()

猜你在找的MsSQL相关文章