赞
踩
if(field!=null || field !=' ')
grouping(field)=0
else
grouping(field)=1
可以 按字段等级显示 结果 值,具体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
返回的结果如下
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。