У меня есть таблица в SQL Server 2014 и нужно рекурсивно обновлять столбец на основе его предыдущего значения. Напр.Обновите столбец и верните его в том же запросе
---------------------------------------
ID | price | diff_with_prev_price |
---------------------------------------
1 | 29 | 0 |
2 | 25 | 0 |
3 | 20 | 0 |
4 | 35 | 0 |
5 | 40 | 0 |
--------------------------------------|
Я хочу рекурсивно обновлять третий столбец, как показано ниже
---------------------------------------
ID | price | diff_with_prev_price |
---------------------------------------
1 | 29 | 0 |
2 | 25 | 25 |
3 | 20 | 5 |
4 | 35 | -30 |
5 | 40 | 10 |
--------------------------------------|
Это суммирования предыдущего значения третьего столбца со следующим значением «цена». Может кто-нибудь, пожалуйста, дайте некоторый намек на это, используя CTE или LEAD/LAG, но не используя курсоры. Мне нужно обновить миллионы строк.
Выходной образец вы предоставили кажется неправильным! Почему первый 1 '0', а второй -' 25'? Почему 'ID = 5' не получил' -70'? Кажется, что логика меняет каждый. – sagi
Вы можете использовать обычное обновление, используя «price = price- (любые расчеты)». – Gnqz
Вы делаете «обратную рекурсивную»? В противном случае вывод не имеет смысла. Кроме того, какую версию SQL-сервера вы используете? Если 2008 или выше, LEAD/LAG будет вашим лучшим выстрелом. – martennis