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的内容