|
|
|
"Лестничное" обновление
|
|||
|---|---|---|---|
|
#18+
Привет всем !!1 Может кто знает решение проблемы: есть таблица ID Date InRest Debet Credit OuRest 1 01.10.2002 1 0 3 4 1 02.10.2002 4 0 1 5 1 05.10.2002 5 0 2 7 Я знаю, что изменил OutRest за 01.10.2002 (к примеру 10). Как одним запросом обновить значения (читай остатки) так, что бы 02.10.2002 InRest = 10, а 05.10.2002 InRest = 11 (OutRest из 02.10.2002). Есть решения с помощь. курсора, но может есть еще решения (красивое). Написал я так UPDATE [Остатки] SET InRest = (SELECT [dbo].[ПредОстаток] (ID, Date)), WHERE ID = 1 AND Date > '01.10.2002' Но все хорошо, если обновлений меньше 2, если больше, то неправильно возвращает остаток (старый как будто не было предыдущего обновления, видо из-за BatchSQL) Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 19:23:07 |
|
||
|
"Лестничное" обновление
|
|||
|---|---|---|---|
|
#18+
Если не нужны остатки за пропущенные дни (выходные и т.п.), то проблему не нужно решать. Всё селектом быстро считается. А если ещё индексированный вью построить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 19:30:04 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3382&tid=1819013]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
20ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
20ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 306ms |

| 0 / 0 |
