钢琴胡先生 發表於 2023-10-23 00:00:00

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

<p>
        这里介绍sql server2005里面的一个使用实例:<br>
        CREATE TABLE tb(province nvarchar(10),city nvarchar(10),score int)<br>
        INSERT tb SELECT '陕西','西安',3<br>
        UNION ALL SELECT '陕西','安康',4<br>
        UNION ALL SELECT '陕西','汉中',2<br>
        UNION ALL SELECT '广东','广州',5<br>
        UNION ALL SELECT '广东','珠海',2<br>
        UNION ALL SELECT '广东','东莞',3<br>
        UNION ALL SELECT '江苏','南京',6<br>
        UNION ALL SELECT '江苏','苏州',1<br>
        GO<br><strong>1、 只有一个汇总</strong><br>
        select province as 省,sum(score) as 分数 from tb group by province with rollup<br>
        结果:<br>
        广东 10<br>
        江苏 7<br>
        陕西 9<br>
        NULL 26<br><br>
        select case when grouping(province)=1 then '合计' else province end as 省,sum(score) as 分数 from tb group by province with rollup<br>
        结果:<br>
        广东 10<br>
        江苏 7<br>
        陕西 9<br>
        合计 26<br><br><strong>2、两级,中间小计最后汇总</strong><br>
        select province as 省,city as 市,sum(score) as 分数 from tb group by province,city with rollup<br>
        结果:<br>
        广东 东莞 3<br>
        广东 广州 5<br>
        广东 珠海 2<br>
        广东 NULL 10<br>
        江苏 南京 6<br>
        江苏 苏州 1<br>
        江苏 NULL 7<br>
        陕西 安康 4<br>
        陕西 汉中 2<br>
        陕西 西安 3<br>
        陕西 NULL 9<br>
        NULL NULL 26<br>
        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<br><br>
        结果:<br>
        广东 东莞 3 0 0<br>
        广东 广州 5 0 0<br>
        广东 珠海 2 0 0<br>
        广东 NULL 10 0 1<br>
        江苏 南京 6 0 0<br>
        江苏 苏州 1 0 0<br>
        江苏 NULL 7 0 1<br>
        陕西 安康 4 0 0<br>
        陕西 汉中 2 0 0<br>
        陕西 西安 3 0 0<br>
        陕西 NULL 9 0 1<br>
        NULL NULL 26 1 1<br><br>
        select case when grouping(province)=1 then '合计' else province end 省,<br>
        case when grouping(city)=1 and grouping(province)=0 then '小计' else city end 市,<br>
        sum(score) as 分数<br>
        from tb group by province,city with rollup<br>
        结果:<br>
        广东 东莞 3<br>
        广东 广州 5<br>
        广东 珠海 2<br>
        广东 小计 10<br>
        江苏 南京 6<br>
        江苏 苏州 1<br>
        江苏 小计 7<br>
        陕西 安康 4<br>
        陕西 汉中 2<br>
        陕西 西安 3<br>
        陕西 小计 9<br>
        合计 NULL 26</p>
頁: [1]
查看完整版本: sql小计汇总 rollup用法实例分析