Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Порядок оброботки записей  [new]
Hamlet
Member

Откуда: Armenia
Сообщений: 573
Здравствуйте.

Я как то затерялся, и немогу понять, можно ли счтать, что записи будут обрабатыватся строго по сортировке

DECLARE @Limit NUMERIC(18,2) = 7800
DECLARE @Tbl TABLE (ID INT, Amount NUMERIC(18,2), AllowedAmount NUMERIC(18,2))
INSERT @Tbl
    (
      [ID]
    , [Amount]
    )
SELECT 1 ID, 1800 Amount UNION ALL
SELECT 2 ID, 2400 Amount UNION ALL
SELECT 3 ID, 4300 Amount UNION ALL
SELECT 4 ID, 400 Amount UNION ALL
SELECT 5 ID, 5400 Amount UNION ALL
SELECT 6 ID, 1700 Amount


UPDATE A SET [AllowedAmount] = [dbo].[MinOf2](Amount,  @Limit), @Limit = [dbo].[MaxOf2](0, @Limit - Amount)
FROM (SELECT TOP 100 PERCENT * FROM @Tbl AS A ORDER BY [A].[ID]) A

SELECT * FROM @Tbl

Заранее спасибо.
29 авг 11, 16:07    [11195990]     Ответить | Цитировать Сообщить модератору
 Re: Порядок оброботки записей  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Hamlet,

нет. UPDATE не знает, что такое порядок записей.
Иногда это бывает очень прискорбно...
29 авг 11, 16:09    [11196002]     Ответить | Цитировать Сообщить модератору
 Re: Порядок оброботки записей  [new]
Hamlet
Member

Откуда: Armenia
Сообщений: 573
Так, что по циклу проходить что ли?
29 авг 11, 16:12    [11196026]     Ответить | Цитировать Сообщить модератору
 Re: Порядок оброботки записей  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Hamlet
Так, что по циклу проходить что ли?
А версия сервера какая?
29 авг 11, 16:18    [11196072]     Ответить | Цитировать Сообщить модератору
 Re: Порядок оброботки записей  [new]
iljy
Member

Откуда:
Сообщений: 8711
Hamlet,

ФАК - накопительный итог.
29 авг 11, 16:20    [11196088]     Ответить | Цитировать Сообщить модератору
 Re: Порядок оброботки записей  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
iap
Hamlet
Так, что по циклу проходить что ли?
А версия сервера какая?

Судя по этому, >=2008:
DECLARE @Limit NUMERIC(18,2) = 7800
29 авг 11, 16:20    [11196090]     Ответить | Цитировать Сообщить модератору
 Re: Порядок оброботки записей  [new]
aleks2
Guest
Hamlet
Так, что по циклу проходить что ли?

Можна ишо CTE разучить.
29 авг 11, 16:20    [11196093]     Ответить | Цитировать Сообщить модератору
 Re: Порядок оброботки записей  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Хотя, циклом по курсору, наверно, действительно получится быстрее, чем рекурсивным CTE.
Или чем коррелированным подзапросом каким-нибудь.
Вот применение скалярной функции обеспечивает Вам классное торможение. Это да.
29 авг 11, 16:21    [11196103]     Ответить | Цитировать Сообщить модератору
 Re: Порядок оброботки записей  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
kDnZP
iap
пропущено...
А версия сервера какая?

Судя по этому, >=2008:
DECLARE @Limit NUMERIC(18,2) = 7800
Точно! Проглядел!
29 авг 11, 16:22    [11196109]     Ответить | Цитировать Сообщить модератору
 Re: Порядок оброботки записей  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
iap
Хотя, циклом по курсору, наверно, действительно получится быстрее, чем рекурсивным CTE.
Или чем коррелированным подзапросом каким-нибудь.
Вот применение скалярной функции обеспечивает Вам классное торможение. Это да.

Дык, окромя всего прочего завернуть простейший CASE в функцию (если я правильно понимаю по названию) - это канешна сильно)))).
29 авг 11, 16:24    [11196124]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить