900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > oracle union all sum 获取来自UNION ALL结果集的总和

oracle union all sum 获取来自UNION ALL结果集的总和

时间:2018-09-01 23:32:23

相关推荐

oracle union all sum 获取来自UNION ALL结果集的总和

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

我想添加到结果集中的总数是结果集中所有日子的底部总数。我试图使用ROLLUP(与GRO​​UP BY语句)没有成功,并且我不断收到错误ORA-00933: SQL command not properly ended。

不知道是否有一个窍门,如果根本不起作用的话,可以使用UNION ALL进行ROLLUP。我也尝试了一个临时表,然后使用临时表的总和来执行一个UNION ALL,但是这看起来很复杂(并且我还没有能够使它工作)。

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

SELECT /*+ USE_HASH(x) */

ACTIVITY_DAY

, SUM(ORDERED_UNITS)

, SUM(ORDERED_AMT)

FROM (

SELECT ACTIVITY_DAY,ORDERED_UNITS,ORDERED_AMT FROM D_DAILY_ORDERS

WHERE REGION_ID = 1

AND MARKETPLACE_ID = 1

AND ACTIVITY_DAY BETWEEN TO_DATE('0409','YYYYMMDD') AND TO_DATE('0505','YYYYMMDD')

AND ID IN ('B019433MGC', 'B019433O4C', 'B00STUX0F0', 'B017SL40S6', 'B00ZHJDJ5W', 'B00STUX276', 'B017SL44RI', 'B00ST415S0', 'B00ST414O0')

UNION ALL

SELECT ACTIVITY_DAY,ORDERED_UNITS,ORDERED_AMT FROM D_DAILY_ORDERS

WHERE REGION_ID = 1

AND MARKETPLACE_ID = 1

AND ACTIVITY_DAY BETWEEN TO_DATE('0501','YYYYMMDD') AND TO_DATE('0505','YYYYMMDD')

AND ID IN ('B007V4YR5M', 'B00BHQ9CHI')

) x

GROUP BY ACTIVITY_DAY

ORDER BY ACTIVITY_DAY

;

-05-16

Lyssa

+0

我相信'rollup'是正确的方式;你只需使用'GROUP BY ROLLUP(ACTIVITY_DAY)'。你可以请张贴错误的查询? –

+0

什么是汇总查询版本引发该错误? –

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。