• 关于SQL的分组汇总统计(关键字 Grouping)


    在做数据分组查询的时候我们经常会用到分组汇总查询,做个简单的例子:

    create table #bbb (大类 nvarchar(10),小类 nvarchar(10),酒水名称 nvarchar(20),数量 int,单价 Money)
    -----------------------------------------------------
    insert into  #bbb select '酒水','啤酒','青岛',10,5
    insert into  #bbb select '酒水','啤酒','哈尔滨',13,5
    insert into  #bbb select '酒水','啤酒','燕京',14,6
    insert into  #bbb select '酒水','啤酒','青岛春生',15,8
    
    
    insert into  #bbb select '酒水','白酒','老白干',18,8
    insert into  #bbb select '酒水','白酒','二锅头',30,5
    insert into  #bbb select '酒水','白酒','邵大',20,15
    insert into  #bbb select '酒水','白酒','茅台',8,200
    
    insert into  #bbb select '酒水','红酒','长城干红',90,30
    insert into  #bbb select '酒水','红酒','长城甜红',30,20
    insert into  #bbb select '酒水','红酒','解百纳',10,55
    ---------------------------------------------------------
    insert into  #bbb select '香烟','本地','中南海',10,5
    insert into  #bbb select '香烟','本地','XXXOOO',13,8
    
    
    insert into  #bbb select '香烟','国内','白沙',18,5
    insert into  #bbb select '香烟','国内','芙蓉王',30,25
    
    insert into  #bbb select '香烟','进口','rrr',90,30
    insert into  #bbb select '香烟','进口','tttt',30,20
    ---------------------------------------------------------
    insert into  #bbb select '食品','全胜','全胜食品',100,1
    insert into  #bbb select '食品','闵城','XXX',130,8
    
    
    insert into  #bbb select '食品','哇哈哈','矿泉水',208,1
    insert into  #bbb select '食品','百事','百事可乐',300,2.5
    
    insert into  #bbb select '食品','可口可乐','可口可乐',250,3
    insert into  #bbb select '食品','oooo','tttt',30,20
    ------------------------------------------------------
    
    
    select 
    case when grouping([小类]) = 1 then [大类] else '' end as [大类],
    case when grouping([酒水名称]) = 1 then [小类] else '' end as [小类],
    [酒水名称],
    case when grouping([酒水名称]) = 1 then null else min([单价])end as[单价],
    sum([数量])as [数量],
    sum([数量]*[单价])as[总额] from #bbb
    group by [大类],[小类],[酒水名称] with rollup
    having grouping([大类]) = 0
    order by grouping([大类])desc,
    case when grouping([大类]) = 0 then [大类] end desc,
    grouping([小类])desc,
    case when grouping([小类]) = 0 then [小类] end desc,
    grouping(酒水名称)desc,
    case when grouping(酒水名称) = 0 then 酒水名称 end desc
    
    drop table #bbb

    执行结果如下:

  • 相关阅读:
    ArcGIS for window mobile 数据打开
    Linux学习拾遗
    ArcEngine 连接sql server sde
    Server Objects Extension(SOE)开发(三)
    Server Objects Extension(SOE)开发(二)
    C# 调用ArcGIS server admin api
    切片文件发布成切片服务
    Printing tools 自定义模板打印的实现
    ubuntu下安装matlab
    修改ubuntu中的gcc和g++版本
  • 原文地址:https://www.cnblogs.com/demo8/p/3081897.html
Copyright © 2020-2023  润新知