oracle查询结果加上总计

Oracle查询结果加上总计,用ROLLUP函数,GROUPING函数用不用都行

ROLLUP:可以理解为卷起,整个打包,用于计算总计

GROUPING:可以接受一列,返回0或者1。如果列值为空,那么GROUPING()返回1;如果列值非空,那么返回0。GROUPING只能在使用ROLLUP或CUBE的查询中使用,用于设置总计行的分组列的内容

SELECT 
DECODE(GROUPING(t.bxgsmc),1,'总计',t.bxgsmc) 保险公司,--用decode函数实现总计列显示“总计”,总计可改成任何需要显示的内容
--decode也可以改写为decode(t.bxgsmc,null,'总计',t.bxgsmc) 保险公司名称
COUNT(*) 清单条数,
SUM(t.cbmj) 承保面积
FROM b_bt t 
WHERE t.ldh='01' --约束条件
GROUP BY ROLLUP(t.bxgsmc) --在group by 后面使用rollup
ORDER BY SUM(t.cbmj) DESC;--按照承保面积降序排列

查询结果就会出现总计行,前面顺序乱了是因为查询结果出来后又按照清单条数排序了 

2024年6月13日补充,不用grouping的写法

select decode(t.bxgsmc,'','总计',t.bxgsmc) bxgsmc from aa t;
--当bxgsmc为空时,显示总计,当bxgsmc不为空时,显示bxgsmc的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值