美文网首页
用SQL统计增加一行或者一列的合计

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

作者: Bobby0322 | 来源:发表于2017-05-16 09:35 被阅读328次
-- 用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()就非常有用。

相关文章

网友评论

      本文标题:用SQL统计增加一行或者一列的合计

      本文链接:https://www.haomeiwen.com/subject/nbokxxtx.html