sqlserver中grouping()函數的用法
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)=1
THEN 0
WHEN GROUPING(level2)=1
THEN 1 WHEN
GROUPING(level3)=1
THEN 2 ELSE
3 END
AS typelevel,level1,level2,level3,SUM(total) FROM dbo.grouptable GROUP BY level1,level2,level3
WITH ROLLUP //with rollup 函數可以讓這些等級分層顯示 ORDER BY level1,level2,level3,typelevel
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)=1
THEN 0
WHEN GROUPING(level2)=1
THEN 1 WHEN
GROUPING(level3)=1
THEN 2 ELSE
3 END
AS typelevel,level1,level2,level3,SUM(total) FROM dbo.grouptable GROUP BY level1,level2,level3
WITH ROLLUP //with rollup 函數可以讓這些等級分層顯示 ORDER BY level1,level2,level3,typelevel
DROP TABLE dbo.grouptable
返回的結果如下
返回的結果如下
————————————————
版權聲明:本文為CSDN博主「IU的男朋友」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_35056027/java/article/details/78344560