Всем привет друзья.
Хочу получить предпоследний документ.
Результат 2 строчки вместо одной
Первая строчка отражает правильный случай вторая лишняя.
Или Я не понял? Или Я не знад?
ГотовностьДата Готовность АктуальнаяСсылка ПредпоследняяГотовность ПредпоследняяГотовностьДата ПредпоследняяСсылка
01.06.2021 2:30:00 Налив 48437 от 31.05.2021 0:00:00 18:10:00 31.05.2021 Налив 48431 от 31.05.2021 0:00:00
01.06.2021 2:30:00 Налив 48437 от 31.05.2021 0:00:00 2:30:00 01.06.2021 Налив 48437 от 31.05.2021 0:00:00
ВЫБРАТЬ
Налив.ГотовностьДата,
Налив.Готовность,
МАКСИМУМ(Налив.Дата) КАК ПредыдущаяДата,
Налив.НомерТупика,
Налив.Ссылка
ПОМЕСТИТЬ ВтПериод
ИЗ
Документ.Налив КАК Налив
ЛЕВОЕ СОЕДИНЕНИЕ Документ.Налив КАК Налив1
ПО Налив.Дата <> Налив1.Дата
И Налив.НомерТупика = Налив1.НомерТупика
ГДЕ
Налив.Ссылка = &Ссылка
СГРУППИРОВАТЬ ПО
Налив.ГотовностьДата,
Налив.Готовность,
Налив.НомерТупика,
Налив.Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВтПериод.ГотовностьДата,
ВтПериод.Готовность,
ВтПериод.Ссылка КАК АктуальнаяСсылка,
Налив.Готовность КАК ПредпоследняяГотовность,
Налив.ГотовностьДата КАК ПредпоследняяГотовностьДата,
Налив.Ссылка КАК ПредпоследняяСсылка
ИЗ
ВтПериод КАК ВтПериод
ЛЕВОЕ СОЕДИНЕНИЕ Документ.Налив КАК Налив
ПО ВтПериод.НомерТупика = Налив.НомерТупика
И ВтПериод.ПредыдущаяДата = Налив.Дата
ВЫБРАТЬ ПЕРВЫЕ 1
ПоступлениеТоваровУСлуг.Ссылка
ИЗ
Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУСлуг
ГДЕ
НЕ ПоступлениеТоваровУСлуг.Ссылка В
(ВЫБРАТЬ ПЕРВЫЕ 1
ПоступлениеТоваровУСлуг.Ссылка
ИЗ
Документ.ПоступлениеТоваровУСлуг КАК ПоступлениеТоваровУСлуг
УПОРЯДОЧИТЬ ПО
ПоступлениеТоваровУСлуг.Дата УБЫВ)
(0) Ты не учитываешь, что внутри одной секунды может быть не один документ, а несколько.
1. Получаешь выборку документов с полями Дата и Ссылка
2. Помещаешь в ВТ
3. Делаешь левое соединение ВТ как ВТ_тек и ВТ как ВТ_пред где ВТ_тек.Дата >= ВТ_пред.Дата
4. Группируешь по ВТ_тек.Ссылка и получаешь максимум(ВТ_пред.Дата)
5. Повторяешь тоже самое но для ссылки внутри одно даты (секунды).
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший