从UNION ALL结果集中获取总和

时间:2016-05-16 16:28:54

标签: sql oracle union rollup

我有一个SQL查询,它在UNION ALL查询中的每个时间窗口中每天获取几个数据点,然后对结果集中每天的数据求和。

我想要添加到结果集中的是总结在结果集中所有日期的底部。我试图使用ROLLUP(使用GROUP BY语句)但没有成功,我一直收到错误Var a = getElementById('whateverID).innerHtml;

不确定是否有使用UNION ALL的ROLLUP技巧,如果它根本不起作用。我还尝试了一个临时表,然后使用临时表的总和执行UNION ALL,但这看起来很复杂(我也无法让它工作)。

有人可以帮我指导一下吗?这是我的工作代码:

ORA-00933: SQL command not properly ended

1 个答案:

答案 0 :(得分:0)

如果我理解得好,ROLLUP是正确的方式;你可能有一些语法错误:

SQL> SELECT
  2    ACTIVITY_DAY
  3  , SUM(ORDERED_UNITS)
  4  , SUM(ORDERED_AMT)
  5  FROM (
  6      select sysdate   as ACTIVITY_DAY, 1 as ORDERED_UNITS, 10 as ORDERED_AMT from dual union all
  7      select sysdate-1 as ACTIVITY_DAY, 2 as ORDERED_UNITS, 20 as ORDERED_AMT from dual union all
  8      select sysdate-1 as ACTIVITY_DAY, 2 as ORDERED_UNITS, 20 as ORDERED_AMT from dual
  9  ) x
 10  GROUP BY rollup(ACTIVITY_DAY)
 11  ORDER BY ACTIVITY_DAY
 12  ;

ACTIVITY_ SUM(ORDERED_UNITS) SUM(ORDERED_AMT)
--------- ------------------ ----------------
15-MAG-16                  4               40
16-MAG-16                  1               10
                           5               50