sqlserver中grouping()函数的用法

来源:互联网 发布:罗伊马斯坦 知乎 编辑:程序博客网 时间:2024/04/29 19:14

1.grouping()函数返回值

if(field!=null || field !=' ')

grouping(field)=0

else 

grouping(field)=1

2.grouping()函数用法

可以 按字段等级显示 结果 值,具体sql如下

CREATE TABLE grouptable
(level1 nvarchar(128),
level2 NVARCHAR(128),
level3 NVARCHAR(128),
total DECIMAL(18,2))


INSERT INTO grouptable(level1,level2,level3,total)
SELECT '!','@','','100' UNION ALL     //等级类型  可以为!,@,#  或者是  A,B,C
SELECT '!','@','#','100' UNION ALL
SELECT 'A','B','C','5000' UNION ALL 
SELECT 'A','B','','6000' 


SELECT CASE 

            WHEN GROUPING(level1)=1THEN
            WHEN GROUPING(level2)=1THEN 1
    WHEN GROUPING(level3)=1THEN 2 ELSE 3 END
            AS typelevel,
level1,level2,level3,SUM(total)
  FROM dbo.grouptable 
  GROUP BY level1,level2,level3WITH ROLLUP  //with rollup 函数可以让这些等级分层显示
  ORDER BY level1,level2,level3,typelevel


       DROP TABLE dbo.grouptable

返回的结果如下