代码改变世界

grouping()函数

2010-01-29 15:24  Jeff Chow  阅读(1381)  评论(0)    收藏  举报

grouping(), Sql Server里边的一个函数,至于在其他数据库是怎样的意思,暂不提。

所要传入的参数是group by字句中的某个表达式,返回结果只有0和1。

 

msdn上说到该函数只是的是否聚合group by列表中的指定列表达式。如果grouping()返回1则指示聚合;返回0则指示不聚合。

个人对此的理解是:如果该值(单元格里边的内容)是聚合(累加)产生的结果,则grouping()函数返回1。

 

常见的用法:在group by 【表达式1】 【表达式2】 …… with rollup中,对于用于分类的表达式,如果有多个的话,在【表达式1】聚合的行中,【表达式2】的值为null,这个null值是由对非数字列的聚合产生的,不同于数据表中的null,所以grouping()可以用来区分标准空值和由rollup、cube 或 grouping sets返回的空值。

举个例,如果分类表达式中存在某条数据的值为null的话,那么grouping()这个值的时候,返回的会是0。因为这个值是标准的null,而不是聚合产生的null。所以,grouping()函数值为null则返回1,非null则返回0的说法并不正确。