Доброе время суток, уважаемые.
В задачах для подготовки по Специалисту по платформе одна из основных тем - проведение документов, упорядоченных по FIFO/LIFO. Предложенный вариант решения из Курсов РФ кажется мне довольно громоздким, и не задействующим в достаточной мере возможности SQL.
Между тем, задача эта формулируется (ИМХО) достаточно прозрачно:
Найти упорядоченное множество N чисел, удовлетворяющее условию:
Сумма (N) < (<=) заданному числу. Не встречал ли кто-нибудь подобный SQL -запрос?
выбрать 1 как ч
ПОМЕСТИТЬ список
объединить все
выбрать 3
объединить все
выбрать 7
объединить все
выбрать 9
;
выбрать
с1.ч как НижняяГраница,
с2.ч как ВерхняяГраница,
сумма(с3.ч) КАК сумма
из
список как с1
внутреннее соединение
список как с2
по истина
внутреннее соединение
список как с3
по с3.ч>=с1.ч и с3.ч<=с2.ч
СГРУППИРОВАТЬ ПО
с1.ч,
с2.ч
Показать
если "упорядоченное множество" не отсортировано, то вводим ещё индекс, условия (>=,<=) делаем по индексу, а суммируем значения.
PS ну и в конце надо добавит проверку по сумме через ключевое слово "имеющие"