SQL Server 2014にテーブルがあり、以前の値に基づいて列を再帰的に更新する必要があります。例えば、列を更新して同じクエリで元に戻す
---------------------------------------
ID | price | diff_with_prev_price |
---------------------------------------
1 | 29 | 0 |
2 | 25 | 0 |
3 | 20 | 0 |
4 | 35 | 0 |
5 | 40 | 0 |
--------------------------------------|
私は、それは「価格」の次の値を持つ3列目の前の値の合計です
---------------------------------------
ID | price | diff_with_prev_price |
---------------------------------------
1 | 29 | 0 |
2 | 25 | 25 |
3 | 20 | 5 |
4 | 35 | -30 |
5 | 40 | 10 |
--------------------------------------|
以下のように再帰的に3番目の列を更新します。 誰かがCTEまたはLEAD/LAGを使用してカーソルを使用せずにこれを行うためのヒントを与えてもらえますか?私は百万行を更新する必要があります。
出力サンプルが間違っているようです!なぜ最初の1は「0」で、2番目のものは「25」ですか?なぜ 'ID = 5'は' -70'を得られませんでしたか?論理がそれぞれ変わるようです。 – sagi
"price = price-(何でも計算)"を使って通常の更新を使うことができます。 – Gnqz
あなたは '逆帰的再帰'をしていますか?それ以外の場合、出力は意味をなさない。また、どのバージョンのSQL Serverを使用していますか? 2008年またはそれ以上の場合は、LEAD/LAGが最適です。 – martennis