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

Откуда: Рязань
Сообщений: 461
Приветствую всех!
Есть задача: по транзакциям движения ценностей на складе сделать "аналог" оборотно-сальдовой ведомости.
Тоесть: день, склад, ценность, количество до транзакции, приход/расход, количество после транзакции.
Все уже придумал и начал реализовывать, но дойдя до оконной функции, которая по складу и ценности должна сумировать приходы/расходы за дни предшествующие текущему, столкнулся с проблемой, тоесть нужна оконная функция с плавающим окном, что-то типа :
автор
SUM(...) OVER (partition by ... order by ... ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)

Но как я понял, такая возможность (плавающее окно ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) введена только в SQL Server 2012.
Возможно, ли как-то это сделать не прибегая к курсорам? Так как отхожу от курсоров полностью, осталась эта последняя задача.

Заранее благодарен за помощь.

-----------
Андрей.
28 апр 12, 15:27    [12485928]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2008 и оконные функции  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
может быть сделать еще один стобец через cross apply в котором будет 1 если ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW и 0 в остальных случаях, а потом sum(этот_самый_столбец*что_суммируем) over (partition by ... order by ...) ?
28 апр 12, 15:35    [12485988]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2008 и оконные функции  [new]
iap
Member

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

надо покупать SQL2012, насколько я понимаю.
Или не использовать оконные функции
28 апр 12, 15:40    [12486021]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2008 и оконные функции  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
В принципе, есть FAQ по нарастающему итогу.
Ведь это он и есть, если не ошибаюсь?
28 апр 12, 15:42    [12486042]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2008 и оконные функции  [new]
Belkin
Member

Откуда: Рязань
Сообщений: 461
iap
Belkin,

надо покупать SQL2012, насколько я понимаю.
Или не использовать оконные функции

Насчет покупать, это не от меня зависит, это дело долгое, а решение нужно сейчас.
Без оконных функций, в аналитике особо не обойдешься, но вот в первый раз (на SQL Server) потребовалась с плавающим окном.

А по существу можете подсказать в каком направлении копать?
Курсор оставлю на последнюю очередь.
28 апр 12, 15:46    [12486070]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2008 и оконные функции  [new]
iap
Member

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

если не заглядывать в FAQ, то приходит в голову коррелированный запрос.
Но это ж какой тормоз будет, я полагаю!
Некоторые любят делать не в один запрос, а с использованием временных таблиц.
Подтянутся, наверно.
28 апр 12, 15:52    [12486103]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2008 и оконные функции  [new]
Belkin
Member

Откуда: Рязань
Сообщений: 461
iap
В принципе, есть FAQ по нарастающему итогу.
Ведь это он и есть, если не ошибаюсь?

Заглянул, интересный способ, буду пробовать, вертеть. :)
Спасибо за подсказку.
Если у кого-то будут еще ценные мысли, буду признателен.
28 апр 12, 15:56    [12486129]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2008 и оконные функции  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Belkin
iap
В принципе, есть FAQ по нарастающему итогу.
Ведь это он и есть, если не ошибаюсь?

Заглянул, интересный способ, буду пробовать, вертеть. :)
Спасибо за подсказку.
Если у кого-то будут еще ценные мысли, буду признателен.
Это Вы UPDATE там посмотрели? (Сейчас тоже туда заглянул)
Способ интересный, но, строго говоря, неправильный.
Потому что нельзя гарантировать порядок выполнения этого UPDATEа для каждой записи.
А это, согласитесь, важно.
28 апр 12, 16:00    [12486157]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2008 и оконные функции  [new]
Belkin
Member

Откуда: Рязань
Сообщений: 461
iap,
Я про этот, если есть порядок по которому нужно склыдывать, как в примере id (у меня это id транзакции), то должно получиться правильно или меня уже клинит?
28 апр 12, 16:35    [12486284]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2008 и оконные функции  [new]
iljy
Member

Откуда:
Сообщений: 8711
Belkin
iap,
Я про этот, если есть порядок по которому нужно склыдывать, как в примере id (у меня это id транзакции), то должно получиться правильно или меня уже клинит?

Порчдок выполнения UPDATE не гарантирован в общем случае.
29 апр 12, 11:38    [12487863]     Ответить | Цитировать Сообщить модератору
 Re: SQL Server 2008 и оконные функции  [new]
Belkin
Member

Откуда: Рязань
Сообщений: 461
iljy,

Посмотрите пример, там сначала используется select. вот это я и использую при построении новой таблицы с оборотно-сальдовой ведомостью.

Спасибо всем, кто помог найти эту "дорожку".
2 май 12, 17:41    [12497439]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить