時刻ごとに1つの値がある時系列を仮定します。私は、現在の値+以前の値の合計を計算することによって、継続合計を計算しなければなりません。しかし、トリッキーな部分は、合計には上限があり、一定の値を超えないようにする必要があります。SQL上限、連続合計
例: 合計は+2でキャップされています。
+-----+---------+------------+
| row | measure | capped sum |
+-----+---------+------------+
| 1 | 1 | 1 |
| 2 | 3 | 2 |
| 3 | 4 | 2 |
| 4 | -2 | 0 |
| 5 | 1 | 1 |
+-----+---------+------------+
行4の「キャップされた合計」は、前の行からの「キャップされた合計」「2」を使用して現在の値を加算して計算されます。結果は< 2なので、そのまま値を取ることができます。
問題は、HANAでは「キャップ付き合計」フィールドでLAG/Window関数を使用できません。それは私に "未知の列"エラーを与えるでしょう。
forループを使用せずにSQL/HANA SQLスクリプトでこれを解決する方法(これは非常に遅いでしょう)?
ない、これはSUM OVERとMAX OVERを使用せずに行うことができることを確認。次の行に自己結合してそのように計算すると、SQLが連続して行をトラバースすると仮定することはできません。興味があれば、私は窓関数を使用するソリューションを持っています(しかし、LEADやLAGは使用しません)。 –
常に可能なソリューションに興味があります。それが私のために働かない場合でも、他人を傷つけたり、助けたりしません。フィドルとして、あるいは解決策としてでもそれを落としてください。 – newBee
hanaで再帰的なcteを使用できますか? –