我有一个SQL查询,它在UNION ALL查询的每个时间窗口内从每天获取几个数据点,然后在结果集中为每一天求和该数据。获取来自UNION ALL结果集的总和
我想添加到结果集中的总数是结果集中所有日子的底部总数。我试图使用ROLLUP(与GROUP 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
什么是汇总查询版本引发该错误? –