MSSQL 函数-系统函数-聚合函数grouping简介(二)


一、系统函数-聚合函数简介及举例说明

grouping 函数
  功能:当结果集中的行是由 rollup cube 关键字和当前列 进行汇总聚合而成时,
我们采用grouping(列名) 则返回1 ,否则返回0

采用此函数,我们可以区分哪些行是由以上两个关键字和相关列聚合生成的
参数: group by 后的 列名
返回值:返回int类型数值 1 或 0
举例:

       create table A(keyId int ,info varchar(60) not null , writeDate datetime)  
go 
insert into A(keyId,info,writeDate)values(1,'maomao365.com',GETDATE())
go
insert into A(keyId,info,writeDate)values(3,'www.maomao365.com',GETDATE())
go
insert into A(keyId,info,writeDate)values(8,'http://www.maomao365.com',GETDATE())
go
insert into A(keyId,info,writeDate)values(8,'http://www.maomao365.com',GETDATE())
go
/*所有列都非 rollup cube生成 所有 groupIng返回0*/
select keyId,info,COUNT(info),SUM(keyId),GROUPING(keyId) from A 
group by keyId,info

/*会根据keyId 获取所有列的组合聚合值 -并将其加入返回数据集中
1 keyId 全部聚合值 则grouping(keyId)=1  grouping(info)=1 
2 keyId=1 info 所有值的聚合值 则grouping(info)=1 
3 keyId=3 info 所有值的聚合值 则grouping(info)=1 
4 keyId=8 info 所有值的聚合值 则grouping(info)=1  
*/

select keyId,COUNT(info),SUM(keyId),GROUPING(keyId) as t,GROUPING(info) as t2 from A 
group by keyId,info
WITH Rollup 
go
 

truncate table A
drop     table A

    


相关阅读:

mssql rollup cube 关键字的用法
如果查询MSSQL中重复列(group by having count)