Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Выбрать документы на сумму не более заданной (число прочтений - 2634 )
antoneus
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 16. Марта 2009
Пол: Мужской
Выбрать документы на сумму не более заданной
29. Ноября 2012 :: 13:58
Печать  
Тема наверняка баян, но что-то не могу ничего найти, равно как и сообразить.
Дано: сальдо, допустим, 100.000 на 31.01.2012.
Нужно, начиная с этой даты в обратном порядке выбрать документы, из которых это сальдо получилось.
Док1 10.000 от 01.01.2012
Док2 6.000 от 03.01.2012
Док3 75.000 от 05.01.2012
Док4 20.000 от 20.01.2012

В выборку должны попасть Док2, Док3, Док4 (то есть если сумма в итоге даже больше сальдо, документ превышающий берем тоже).
Можно через курсор, конечно ну или цикл там, а "чистым" запросом можно такое? Спасибо.
  
Наверх
 
IP записан
 
Ярослав
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 43
Местоположение: Иркутск
Зарегистрирован: 14. Октября 2008
Re: Выбрать документы на сумму не более заданной
Ответ #1 - 30. Ноября 2012 :: 01:31
Печать  
http://www.sql.ru/forum/afsearch.aspx?s=fifo

А чем не нравятся курсоры?
  
Наверх
 
IP записан
 
antoneus
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 16. Марта 2009
Пол: Мужской
Re: Выбрать документы на сумму не более заданной
Ответ #2 - 30. Ноября 2012 :: 05:15
Печать  
Спасибо, покопаюсь.
Курсоры нравятся, но в перспективе маячит переход на etersoft@PostgreSQL, работа через Selta. а там пока с курсорами плохо и неизвестно когда будет хорошо.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Выбрать документы на сумму не более заданной
Ответ #3 - 30. Ноября 2012 :: 10:08
Печать  
Построить выборку с накопительным итогом, что ли?

Ну делаешь джойн на себя с нестрогим неравенством в условии.
Примерно так:


Код
Выбрать все
Select
   В.Док,
   В.ПозицияДок,
   sum(В.Сумма)
From
   Выборка В
   Left Join Выборка Д on Д.ПозицияДок <= В.ПозицияДок
Group By
   В.Док,
   В.ПоицияДок 



Строгое/не строгое неравенство и направление сравнения корректируешь под конкретные нужды.
Только, за исключением заведомо маленьких выборок, мне за такое сразу бы захотелось кого-нить побить.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выбрать документы на сумму не более заданной
Ответ #4 - 03. Декабря 2012 :: 12:27
Печать  
Satans Claws писал(а) 30. Ноября 2012 :: 10:08:
мне за такое сразу бы захотелось кого-нить побить.


А за такое: http://www.1cpp.ru/forum/YaBB.pl?num=1163677668Нерешительный
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Выбрать документы на сумму не более заданной
Ответ #5 - 04. Декабря 2012 :: 04:48
Печать  
berezdetsky писал(а) 03. Декабря 2012 :: 12:27:
Satans Claws писал(а) 30. Ноября 2012 :: 10:08:
мне за такое сразу бы захотелось кого-нить побить.


А за такое: http://www.1cpp.ru/forum/YaBB.pl?num=1163677668?  Нерешительный


Применяй критерий заведомо-малости-выборки.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать