• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    sql小计汇总 rollup用法实例分析
    这里介绍sql server2005里面的一个使用实例:
    CREATE TABLE tb(province nvarchar(10),city nvarchar(10),score int)
    INSERT tb SELECT '陕西','西安',3
    UNION ALL SELECT '陕西','安康',4
    UNION ALL SELECT '陕西','汉中',2
    UNION ALL SELECT '广东','广州',5
    UNION ALL SELECT '广东','珠海',2
    UNION ALL SELECT '广东','东莞',3
    UNION ALL SELECT '江苏','南京',6
    UNION ALL SELECT '江苏','苏州',1
    GO
    1、 只有一个汇总
    select province as 省,sum(score) as 分数 from tb group by province with rollup
    结果:
    广东 10
    江苏 7
    陕西 9
    NULL 26

    select case when grouping(province)=1 then '合计' else province end as 省,sum(score) as 分数 from tb group by province with rollup
    结果:
    广东 10
    江苏 7
    陕西 9
    合计 26

    2、两级,中间小计最后汇总
    select province as 省,city as 市,sum(score) as 分数 from tb group by province,city with rollup
    结果:
    广东 东莞 3
    广东 广州 5
    广东 珠海 2
    广东 NULL 10
    江苏 南京 6
    江苏 苏州 1
    江苏 NULL 7
    陕西 安康 4
    陕西 汉中 2
    陕西 西安 3
    陕西 NULL 9
    NULL NULL 26
    select province as 省,city as 市,sum(score) as 分数,grouping(province) as g_p,grouping(city) as g_c from tb group by province,city with rollup

    结果:
    广东 东莞 3 0 0
    广东 广州 5 0 0
    广东 珠海 2 0 0
    广东 NULL 10 0 1
    江苏 南京 6 0 0
    江苏 苏州 1 0 0
    江苏 NULL 7 0 1
    陕西 安康 4 0 0
    陕西 汉中 2 0 0
    陕西 西安 3 0 0
    陕西 NULL 9 0 1
    NULL NULL 26 1 1

    select case when grouping(province)=1 then '合计' else province end 省,
    case when grouping(city)=1 and grouping(province)=0 then '小计' else city end 市,
    sum(score) as 分数
    from tb group by province,city with rollup
    结果:
    广东 东莞 3
    广东 广州 5
    广东 珠海 2
    广东 小计 10
    江苏 南京 6
    江苏 苏州 1
    江苏 小计 7
    陕西 安康 4
    陕西 汉中 2
    陕西 西安 3
    陕西 小计 9
    合计 NULL 26
    上一篇:Linux下 mysql oracle 简单使用手册
    下一篇:连续序号的 sql语句
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    sql小计汇总 rollup用法实例分析 sql,小计,汇总,rollup,用法,