Второй день бьюсь на тему LIFO запросом. Есть таблица с приходами, таблица с расходами.
по публикации https://infostart.ru/public/68225/ сделал FIFO - все отлично работает, но не получается с LIFO. вроде 3 временный тамблиц всего, но не идет..
Может подскажет кто, куда копать? Хочется именно запросом, поскольку это часть другого большого запроса...
во вложении тестовый сокращенный вариант сделанный по вышеуказанной публикации..
Пилите временные таблицы, через вложенный запрос с сортировкой
там всего пару-тройка временных таблиц, какую пилить? ;) Несколько вариантов перепробовал-не взлетело...
(2) - там все данные в СКД, меаданные конфигурации не используются, так что на любой запустится..
ВЫБРАТЬ
"Контрагент" КАК Контрагент,
ДАТАВРЕМЯ(2017, 9, 27) КАК ДатаСобытия,
9448.84 КАК Площадь
ПОМЕСТИТЬ ВТ_ПриходНаКонец
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2018, 4, 6),
1507.06
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2018, 9, 15),
3208.7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2019, 4, 23),
122
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2019, 5, 1),
2100
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
"Контрагент" КАК Контрагент,
ДАТАВРЕМЯ(2019, 12, 19) КАК ДатаСобытия,
2100 КАК Площадь
ПОМЕСТИТЬ ВТ_РасходНаКонец
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2018, 12, 15),
3208.7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2020, 2, 29),
122
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2021, 2, 14),
10955.9
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ПриходНаКонец.Контрагент КАК Контрагент,
ВТ_ПриходНаКонец.ДатаСобытия КАК ДатаСобытия,
ВТ_ПриходНаКонец.Площадь КАК Площадь,
СУММА(ВТ_ПриходНаКонец1.Площадь) - ВТ_ПриходНаКонец.Площадь КАК ПлощадьДо,
СУММА(ВТ_ПриходНаКонец1.Площадь) КАК ПлощадьПосле
ПОМЕСТИТЬ ВТ_НарПриходНаКонец
ИЗ
ВТ_ПриходНаКонец КАК ВТ_ПриходНаКонец
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПриходНаКонец КАК ВТ_ПриходНаКонец1
ПО ВТ_ПриходНаКонец.Контрагент = ВТ_ПриходНаКонец1.Контрагент
И ВТ_ПриходНаКонец.ДатаСобытия >= ВТ_ПриходНаКонец1.ДатаСобытия
СГРУППИРОВАТЬ ПО
ВТ_ПриходНаКонец.Контрагент,
ВТ_ПриходНаКонец.ДатаСобытия,
ВТ_ПриходНаКонец.Площадь
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_РасходНаКонец.Контрагент КАК Контрагент,
ВТ_РасходНаКонец.ДатаСобытия КАК ДатаСобытия,
ВТ_РасходНаКонец.Площадь КАК Площадь,
СУММА(ВТ_РасходНаКонец1.Площадь) - ВТ_РасходНаКонец.Площадь КАК ПлощадьДо,
СУММА(ВТ_РасходНаКонец1.Площадь) КАК ПлощадьПосле
ПОМЕСТИТЬ ВТ_НарРасходНаКонец
ИЗ
ВТ_РасходНаКонец КАК ВТ_РасходНаКонец
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_РасходНаКонец КАК ВТ_РасходНаКонец1
ПО ВТ_РасходНаКонец.Контрагент = ВТ_РасходНаКонец1.Контрагент
И ВТ_РасходНаКонец.ДатаСобытия >= ВТ_РасходНаКонец1.ДатаСобытия
СГРУППИРОВАТЬ ПО
ВТ_РасходНаКонец.Контрагент,
ВТ_РасходНаКонец.ДатаСобытия,
ВТ_РасходНаКонец.Площадь
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_НарРасходНаКонец.ДатаСобытия КАК ДатаСобытияРасход,
ВТ_НарПриходНаКонец.ДатаСобытия КАК ДатаСобытияПриход,
ВТ_НарРасходНаКонец.Контрагент КАК Контрагент,
ВТ_НарРасходНаКонец.Площадь КАК ПлощадьПоДокументу,
ВЫБОР
КОГДА ВТ_НарПриходНаКонец.ДатаСобытия ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ ВЫБОР
КОГДА ВТ_НарПриходНаКонец.ПлощадьПосле < ВТ_НарРасходНаКонец.ПлощадьПосле
ТОГДА ВТ_НарПриходНаКонец.ПлощадьПосле
ИНАЧЕ ВТ_НарРасходНаКонец.ПлощадьПосле
КОНЕЦ - ВЫБОР
КОГДА ВТ_НарПриходНаКонец.ПлощадьДо > ВТ_НарРасходНаКонец.ПлощадьДо
ТОГДА ВТ_НарПриходНаКонец.ПлощадьДо
ИНАЧЕ ВТ_НарРасходНаКонец.ПлощадьДо
КОНЕЦ
КОНЕЦ КАК ПлощадьСписания,
ВТ_НарРасходНаКонец.ДатаСобытия КАК ДатаСобытия,
ЕСТЬNULL(ВТ_НарПриходНаКонец.Площадь, 1) КАК ПлощадьПартии
ИЗ
ВТ_НарРасходНаКонец КАК ВТ_НарРасходНаКонец
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_НарПриходНаКонец КАК ВТ_НарПриходНаКонец
ПО ВТ_НарРасходНаКонец.Контрагент = ВТ_НарПриходНаКонец.Контрагент
И ВТ_НарРасходНаКонец.ПлощадьПосле > ВТ_НарПриходНаКонец.ПлощадьДо
И ВТ_НарРасходНаКонец.ПлощадьДо < ВТ_НарПриходНаКонец.ПлощадьПосле
И ВТ_НарРасходНаКонец.ДатаСобытия > ВТ_НарПриходНаКонец.ДатаСобытия
(7) Задача не ясна. Указаны остатки по состоянию на разные даты или обороты ? Если обороты почему не объединить в одну таблицу, где расход будет с минусом и после строить накопительный итог в ту или другую сторону. Если же остатки то опять же сперва требуется объединить в хронологию остатков, посчитать обороты между всеми неразрывными парами дат обороты и далее работать как с оборотами.
Как должен выглядеть ожидаемая результирующая таблица на данном примере данных ?
(8) указаны движения. на скрине (приложил) исходная таблица - это что-то типа прихода и расхода товаров. "Дата прихода" и есть партия. (прихода и расхода в один день нет).
Ожидаемый результат - внизу на скрине.
(10) Судя по результату на суммы расходов в хронологии надо набрать партии приходов. Но порядок разнесения приходов смущает - 2018...2019...2017. Это опечатка либо же есть еще какое-то условие?
(10) Если я правильно понял то так (плюс дальше еще необходимо нулевые партии отбросить)
ВЫБРАТЬ
"Контрагент" КАК Контрагент,
ДАТАВРЕМЯ(2017, 9, 27) КАК ДатаСобытия,
9448.84 КАК Площадь
ПОМЕСТИТЬ ВТ_ПриходНаКонец
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2018, 4, 6),
1507.06
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2018, 9, 15),
3208.7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2019, 4, 23),
122
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2019, 5, 1),
2100
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
"Контрагент" КАК Контрагент,
ДАТАВРЕМЯ(2018, 12, 15) КАК ДатаСобытия,
3208.7 КАК Площадь
ПОМЕСТИТЬ ВТ_РасходНаКонец
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2019, 12, 19),
2100
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2020, 2, 29),
122
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2021, 2, 14),
10955.9
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_РасходНаКонец.Контрагент КАК Контрагент,
ВТ_РасходНаКонец.ДатаСобытия КАК ДатаСобытия,
ВТ_РасходНаКонец.Площадь КАК Площадь,
СУММА(ВТ_РасходНаКонец1.Площадь) КАК ПлощадьРасходНакопительно
ПОМЕСТИТЬ РасходыНакопительно
ИЗ
ВТ_РасходНаКонец КАК ВТ_РасходНаКонец
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_РасходНаКонец КАК ВТ_РасходНаКонец1
ПО ВТ_РасходНаКонец.Контрагент = ВТ_РасходНаКонец1.Контрагент
И ВТ_РасходНаКонец.ДатаСобытия <= ВТ_РасходНаКонец1.ДатаСобытия
СГРУППИРОВАТЬ ПО
ВТ_РасходНаКонец.ДатаСобытия,
ВТ_РасходНаКонец.Контрагент,
ВТ_РасходНаКонец.Площадь
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ПриходНаКонец.Контрагент КАК Контрагент,
ВТ_ПриходНаКонец.ДатаСобытия КАК ДатаСобытия,
ВТ_ПриходНаКонец.Площадь КАК ПлощадьПоПартии,
СУММА(ВТ_ПриходНаКонец1.Площадь) КАК ЧастьПлощадиПоПартииДо
ПОМЕСТИТЬ ПартииПриходаНакопительно
ИЗ
ВТ_ПриходНаКонец КАК ВТ_ПриходНаКонец
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПриходНаКонец КАК ВТ_ПриходНаКонец1
ПО ВТ_ПриходНаКонец.Контрагент = ВТ_ПриходНаКонец1.Контрагент
И ВТ_ПриходНаКонец.ДатаСобытия >= ВТ_ПриходНаКонец1.ДатаСобытия
СГРУППИРОВАТЬ ПО
ВТ_ПриходНаКонец.Контрагент,
ВТ_ПриходНаКонец.ДатаСобытия,
ВТ_ПриходНаКонец.Площадь
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПлощадиРасходов.Контрагент КАК Контрагент,
ПлощадиРасходов.ДатаСобытия КАК ДатаСобытия,
ПлощадиПриходовПоПартиям.ДатаСобытия КАК Партия,
СУММА(ВЫБОР
КОГДА ПлощадиРасходов.ИнтервалРасходаПо < ПлощадиПриходовПоПартиям.ИнтервалПриходаДо
ТОГДА ПлощадиРасходов.ИнтервалРасходаПо
ИНАЧЕ ПлощадиПриходовПоПартиям.ИнтервалПриходаДо
КОНЕЦ - ВЫБОР
КОГДА ПлощадиРасходов.ИнтервалРасходаОт < ПлощадиПриходовПоПартиям.ИнтервалПриходаОт
ТОГДА ПлощадиПриходовПоПартиям.ИнтервалПриходаОт
ИНАЧЕ ПлощадиРасходов.ИнтервалРасходаОт
КОНЕЦ) КАК ПриходПоПартии,
ПлощадиПриходовПоПартиям.ИнтервалПриходаОт КАК ИнтервалПриходаОт,
ПлощадиПриходовПоПартиям.ИнтервалПриходаДо КАК ИнтервалПриходаДо,
ПлощадиРасходов.ИнтервалРасходаОт КАК ИнтервалРасходаОт,
ПлощадиРасходов.ИнтервалРасходаПо КАК ИнтервалРасходаПо
ИЗ
(ВЫБРАТЬ
РасходыНакопительно.Контрагент КАК Контрагент,
РасходыНакопительно.ДатаСобытия КАК ДатаСобытия,
РасходыНакопительно.Площадь КАК ПлощадьРасхода,
РасходыНакопительно.ПлощадьРасходНакопительно - РасходыНакопительно.Площадь КАК ИнтервалРасходаОт,
РасходыНакопительно.ПлощадьРасходНакопительно КАК ИнтервалРасходаПо
ИЗ
РасходыНакопительно КАК РасходыНакопительно) КАК ПлощадиРасходов
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ПартииПриходаНакопительно.Контрагент КАК Контрагент,
ПартииПриходаНакопительно.ДатаСобытия КАК ДатаСобытия,
ПартииПриходаНакопительно.ПлощадьПоПартии КАК ПлощадьПоПартии,
ПартииПриходаНакопительно.ЧастьПлощадиПоПартииДо - ПартииПриходаНакопительно.ПлощадьПоПартии КАК ИнтервалПриходаОт,
ПартииПриходаНакопительно.ЧастьПлощадиПоПартииДо КАК ИнтервалПриходаДо
ИЗ
ПартииПриходаНакопительно КАК ПартииПриходаНакопительно) КАК ПлощадиПриходовПоПартиям
ПО ПлощадиРасходов.Контрагент = ПлощадиПриходовПоПартиям.Контрагент
И ПлощадиРасходов.ИнтервалРасходаПо >= ПлощадиПриходовПоПартиям.ИнтервалПриходаОт
И ПлощадиРасходов.ИнтервалРасходаОт <= ПлощадиПриходовПоПартиям.ИнтервалПриходаДо
СГРУППИРОВАТЬ ПО
ПлощадиПриходовПоПартиям.ДатаСобытия,
ПлощадиРасходов.ДатаСобытия,
ПлощадиРасходов.Контрагент,
ПлощадиПриходовПоПартиям.ИнтервалПриходаОт,
ПлощадиПриходовПоПартиям.ИнтервалПриходаДо,
ПлощадиРасходов.ИнтервалРасходаОт,
ПлощадиРасходов.ИнтервалРасходаПо
УПОРЯДОЧИТЬ ПО
Контрагент,
ДатаСобытия,
Партия УБЫВ
ИТОГИ
СУММА(ПриходПоПартии)
ПО
ОБЩИЕ,
Контрагент,
ДатаСобытия,
Партия
(7)
И ВТ_РасходНаКонец.ДатаСобытия >= ВТ_РасходНаКонец1.ДатаСобытия
И ВТ_РасходНаКонец.ДатаСобытия ="на "<".
Если готовить таблицу для "расхода на одну дату"(например при проведении документа реализации) - это срабатывает, а если дат расхода несколько обрабатывается - это не прокатило.. это первым делом попробовал..
скидывай это все в еще один пакет запросов и там уже сортируй
как то так получиться
ВЫБРАТЬ
"Контрагент" КАК Контрагент,
ДАТАВРЕМЯ(2017, 9, 27) КАК ДатаСобытия,
9448.84 КАК Площадь
ПОМЕСТИТЬ ВТ_ПриходНаКонец
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2018, 4, 6),
1507.06
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2018, 9, 15),
3208.7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2019, 4, 23),
122
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2019, 5, 1),
2100
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
"Контрагент" КАК Контрагент,
ДАТАВРЕМЯ(2018, 12, 15) КАК ДатаСобытия,
3208.7 КАК Площадь
ПОМЕСТИТЬ ВТ_РасходНаКонец
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2019, 12, 19),
2100
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2020, 2, 29),
122
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"Контрагент",
ДАТАВРЕМЯ(2021, 2, 14),
10955.9
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_РасходНаКонец.Контрагент КАК Контрагент,
ВТ_РасходНаКонец.ДатаСобытия КАК ДатаСобытия,
ВТ_РасходНаКонец.Площадь КАК Площадь,
СУММА(ВТ_РасходНаКонец1.Площадь) КАК ПлощадьРасходНакопительно
ПОМЕСТИТЬ РасходыНакопительно
ИЗ
ВТ_РасходНаКонец КАК ВТ_РасходНаКонец
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_РасходНаКонец КАК ВТ_РасходНаКонец1
ПО ВТ_РасходНаКонец.Контрагент = ВТ_РасходНаКонец1.Контрагент
И ВТ_РасходНаКонец.ДатаСобытия <= ВТ_РасходНаКонец1.ДатаСобытия
СГРУППИРОВАТЬ ПО
ВТ_РасходНаКонец.ДатаСобытия,
ВТ_РасходНаКонец.Контрагент,
ВТ_РасходНаКонец.Площадь
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ПриходНаКонец.Контрагент КАК Контрагент,
ВТ_ПриходНаКонец.ДатаСобытия КАК ДатаСобытия,
ВТ_ПриходНаКонец.Площадь КАК ПлощадьПоПартии,
СУММА(ВТ_ПриходНаКонец1.Площадь) КАК ЧастьПлощадиПоПартииДо
ПОМЕСТИТЬ ПартииПриходаНакопительно
ИЗ
ВТ_ПриходНаКонец КАК ВТ_ПриходНаКонец
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПриходНаКонец КАК ВТ_ПриходНаКонец1
ПО ВТ_ПриходНаКонец.Контрагент = ВТ_ПриходНаКонец1.Контрагент
И ВТ_ПриходНаКонец.ДатаСобытия >= ВТ_ПриходНаКонец1.ДатаСобытия
СГРУППИРОВАТЬ ПО
ВТ_ПриходНаКонец.Контрагент,
ВТ_ПриходНаКонец.ДатаСобытия,
ВТ_ПриходНаКонец.Площадь
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПлощадиРасходов.Контрагент КАК Контрагент,
ПлощадиРасходов.ДатаСобытия КАК ДатаСобытия,
ПлощадиПриходовПоПартиям.ДатаСобытия КАК Партия,
ВЫБОР
КОГДА ПлощадиРасходов.ИнтервалРасходаПо < ПлощадиПриходовПоПартиям.ИнтервалПриходаДо
ТОГДА ПлощадиРасходов.ИнтервалРасходаПо
ИНАЧЕ ПлощадиПриходовПоПартиям.ИнтервалПриходаДо
КОНЕЦ - ВЫБОР
КОГДА ПлощадиРасходов.ИнтервалРасходаОт < ПлощадиПриходовПоПартиям.ИнтервалПриходаОт
ТОГДА ПлощадиПриходовПоПартиям.ИнтервалПриходаОт
ИНАЧЕ ПлощадиРасходов.ИнтервалРасходаОт
КОНЕЦ КАК ПриходПоПартии,
ПлощадиПриходовПоПартиям.ИнтервалПриходаОт КАК ИнтервалПриходаОт,
ПлощадиПриходовПоПартиям.ИнтервалПриходаДо КАК ИнтервалПриходаДо,
ПлощадиРасходов.ИнтервалРасходаОт КАК ИнтервалРасходаОт,
ПлощадиРасходов.ИнтервалРасходаПо КАК ИнтервалРасходаПо
ПОМЕСТИТЬ вр3
ИЗ
(ВЫБРАТЬ
РасходыНакопительно.Контрагент КАК Контрагент,
РасходыНакопительно.ДатаСобытия КАК ДатаСобытия,
РасходыНакопительно.Площадь КАК ПлощадьРасхода,
РасходыНакопительно.ПлощадьРасходНакопительно - РасходыНакопительно.Площадь КАК ИнтервалРасходаОт,
РасходыНакопительно.ПлощадьРасходНакопительно КАК ИнтервалРасходаПо
ИЗ
РасходыНакопительно КАК РасходыНакопительно) КАК ПлощадиРасходов
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ПартииПриходаНакопительно.Контрагент КАК Контрагент,
ПартииПриходаНакопительно.ДатаСобытия КАК ДатаСобытия,
ПартииПриходаНакопительно.ПлощадьПоПартии КАК ПлощадьПоПартии,
ПартииПриходаНакопительно.ЧастьПлощадиПоПартииДо - ПартииПриходаНакопительно.ПлощадьПоПартии КАК ИнтервалПриходаОт,
ПартииПриходаНакопительно.ЧастьПлощадиПоПартииДо КАК ИнтервалПриходаДо
ИЗ
ПартииПриходаНакопительно КАК ПартииПриходаНакопительно) КАК ПлощадиПриходовПоПартиям
ПО ПлощадиРасходов.Контрагент = ПлощадиПриходовПоПартиям.Контрагент
И ПлощадиРасходов.ИнтервалРасходаПо >= ПлощадиПриходовПоПартиям.ИнтервалПриходаОт
И ПлощадиРасходов.ИнтервалРасходаОт <= ПлощадиПриходовПоПартиям.ИнтервалПриходаДо
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
вр3.Контрагент КАК Контрагент,
вр3.ДатаСобытия КАК ДатаСобытия,
вр3.Партия КАК Партия,
вр3.ПриходПоПартии КАК ПриходПоПартии,
вр3.ИнтервалПриходаОт КАК ИнтервалПриходаОт,
вр3.ИнтервалПриходаДо КАК ИнтервалПриходаДо,
вр3.ИнтервалРасходаОт КАК ИнтервалРасходаОт,
вр3.ИнтервалРасходаПо КАК ИнтервалРасходаПо
ИЗ
вр3 КАК вр3
УПОРЯДОЧИТЬ ПО
Партия УБЫВ
сделай сортировку как необходимо. Не понял зачем еще доп. условия? Если они уж так необходимы то отбирай в конечной таблице - это не совсем кошерно но данные во всяком случае уже одинаковые
делай сортировку как необходимо. Не понял зачем еще доп. условия? Если они уж так необходимы то отбирай в конечной таблице - это не совсем кошерно но данные во всяком случае уже одинаковые
Какие данные одинаковые?
С картинкой на (10) не совпадают партии... не получается LIFO. Доп условия не нужны, нужно получить результат как на картинке... пока не получилось..
(17) Решение в (13) решает поставленную задачу. А итоговая картинка в (10) содержит ошибку - расход от 29.02.2020 должен был по лифо списать партию 15.09.2018.
Добрый день!
Я для LIFO (когда остатки склада распределяю например по приходам) использую тот же метод ( https://infostart.ru/public/68225/ ), только когда получаю нарастающую таблицу поступлений то в "Приход.МоментВремени >= Приход1.МоментВремени" меняю ">=" наоборот на "<=" получается "Приход.МоментВремени <= Приход1.МоментВремени" и тогда таблица "от / до" выстраивается в обратном порядке и распределение идет в другом порядке от позднего к раннему.
Если я правильно понял вопрос)