SQL SEVER分类汇总后如何让小计和总计放到下面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL SEVER分类汇总后如何让小计和总计放到下面相关的知识,希望对你有一定的参考价值。

语句如下:SELECT 国家,round(SUM(出口量),0)as出口数量
FROM seamless
where年份=2013 and单位名称='中国公司'groupby国家 withrollup
orderby出口数量desc
结果总计总是在上面显示,如何能把总计显示在下面

参考技术A http://blog.csdn.net/greystar/article/details/48973599
看下这个效果图
再改进下吧。追问

你推荐的非常好,我是个初学者,不知道你能否有时间简单写写语句,说实话有点看不懂。

追答

CASE WHEN 是用来判断,相当于if
CASE WHEN GROUPING(Name) = 1是判断是否是分组数据 ,=0就是一般的数据。
就是几个组合,没什么,你把CASE WHEN 搞清楚就明白了。

本回答被提问者和网友采纳

sql 分组小计与合计语法

我想做一个分组的小计与合计,发现有一个问题
初始代码:select case when grouping(oil_name)=1 and grouping(oildepot_name)=0 then N'小计' else isnull(oildepot_name,'') end '出油库',case when grouping(oildepot_name)=1 then N'合计' else isnull(oil_name,'') end '油品',sum(qty) as '数量'from tb_Tally_SaleReceivables where unit_name='吨' group by oildepot_name,oil_name with rollup

显示的数据很正常
但是 当我加上单位一列之后:
select case when grouping(oil_name)=1 and grouping(oildepot_name)=0 then N'小计' else isnull(oildepot_name,'') end '出油库',case when grouping(oildepot_name)=1 then N'合计' else isnull(oil_name,'') end '油品',unit_name as '单位',sum(qty) as '数量'from tb_Tally_SaleReceivables where unit_name='吨' group by oildepot_name,oil_name,unit_name with rollup

就会多出一行小计行,问题可能出现在group by分组里面,现在我想问一下,怎么样才能避免图2的问题,就是说不管我怎么分组,小计行永远只会有一条 希望高手解答,高分送上

参考技术A group by oildepot_name,oil_name with rollup
改成
group by rollup(oildepot_name),oil_name
参考技术B 看图就知道是没办法合组呗,将NULL值ISNULL一下,看你这单位也没有第二种,直接就null时为吨,自然就能合组了呗 参考技术C 你解决的话能把代码贴上来吗?学习一下,谢谢追问

with rollup having ((grouping(oil_name)=0 and grouping(oildepot_name)=0 and grouping(unit_name)=0) or ( grouping(oil_name)=1 and grouping(oildepot_name)=0 and grouping(unit_name)=1 ) )
加上条件就好了

以上是关于SQL SEVER分类汇总后如何让小计和总计放到下面的主要内容,如果未能解决你的问题,请参考以下文章

SQL如何查询总计和小计

汇总以仅保留总计并删除小计

T-SQL多个小计+合计,分类汇总

T-SQL多个小计+合计,分类汇总

sql 分组小计与合计语法

abap alv 不同字段 分类汇总