2016-05-16 12 views
0

UNION ALLクエリの時間枠を横切って毎日からいくつかのデータポイントを取得し、その結果セットの各日のデータを合計するSQLクエリがあります。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('20160409','YYYYMMDD') AND TO_DATE('20160505','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('20160501','YYYYMMDD') AND TO_DATE('20160505','YYYYMMDD') 
     AND ID IN ('B007V4YR5M', 'B00BHQ9CHI') 
) x 
GROUP BY ACTIVITY_DAY 
ORDER BY ACTIVITY_DAY 
; 
+0

私は 'rollup'が正しい方法だと信じています。 'GROUP BY ROLLUP(ACTIVITY_DAY)'を使わなければなりません。あなたはエラーを出す質問を投稿していただけますか? – Aleksej

+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 
関連する問題