2016-03-26 16 views
0

値の列の合計を保持するビューに列を追加する必要があります。この列は、Cat AまたはCat Bのいずれかの行が変更されたときに、実行中の合計をリセットする必要があります。 ので、出力データは次のようにする必要があります -リセットOracle Analyticsを使用していずれかの列の値が変更された場合の実行合計

CAT A CAT B Value Running Total 
===== ===== ===== ============= 
0  1  15 
0  1  235 
0  1  306  556 
0  0   
1  2  85  85 
1  1  105  105 
0  2  600 
0  2  70  670 
0  3  564 
0  3  101  665 
0  1  30  30 
+0

SQLテーブルは*順不同*結果セットを表します。

その後、あなたはグループを定義し、実行しているサムのための「分析」sum()使用するlag()sum()を使用することができます。 「実行中の合計」は、提案して注文します。順序を指定する列は何ですか?また、実行合計に値がありません。 「実行中の」合計のために空白の行に値があるはずです。 –

答えて

1

まず、実行中の合計のための順序を指定する列を必要とします。私はこれがidと呼ばれると仮定します。

第2に、特定の行に値を持たないロジックがあるようです。この論理が何であるかははっきりしていません。適切な「実行合計」がすべての行に定義されます。

select t.cata, t.catb, t.value, 
     sum(value) over (partition by grp order by id) as runningsum 
from (select t.*, 
      sum(case when cata = prev_cata and catb = prev_catb then 0 
         else 1 
        end) over (order by id) as grp 
     from (select t.*, lag(cata) over (order by id) as prev_cata, 
        lag(catb) over (order by id) as prev_catb 
      from t 
      ) t 
    ) t; 
+0

ご回答ありがとうございました。また、私は実行合計を注文するために使用する日付の列を持っています。そして、はい、行の列の値が変更されるまで、実行可能な合計を非表示にしたい(可能な場合)。 – mssstack1