用SQL统计增加一行或者一列的合计

-- 用SQL统计增加一行或者一列的合计

-- .方法一
WITH STUDENT AS
 (SELECT 'STUDENT1' NAME1, 1 VALUE FROM DUAL
  UNION ALL
  SELECT 'STUDENT2' NAME1, 2 VALUE FROM DUAL
  UNION ALL
  SELECT 'STUDENT3' NAME1, 3 VALUE FROM DUAL)
SELECT * FROM STUDENT
UNION ALL
SELECT '合计', SUM(VALUE) FROM STUDENT;

-- .方法2
WITH STUDENT AS
 (SELECT 'STUDENT1' NAME1, 1 VALUE FROM DUAL
  UNION ALL
  SELECT 'STUDENT2' NAME1, 2 VALUE FROM DUAL
  UNION ALL
  SELECT 'STUDENT3' NAME1, 3 VALUE FROM DUAL)
SELECT DECODE(GROUPING(NAME1), 1, '合计', NAME1), SUM(VALUE) FROM STUDENT GROUP BY ROLLUP((NAME1, VALUE));

-- DECODE(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值);
-- GROUPING函数可以接受一列,返回0或者1。
-- 如果列值为空,那么GROUPING()返回1;
-- 如果列值非空,那么返回0。
-- GROUPING只能在使用ROLLUP或CUBE的查询中使用。当需要在返回空值的地方显示某个值时,GROUPING()就非常有用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容