![]() |
![]() |
![]() |
|
Получить в запросе предыдущее и все значения | ☑ | ||
---|---|---|---|---|
0
Barry
25.07.25
✎
19:49
|
Доброго времени суток!
Столкнулся с такой проблемкой, в общем есть регистр сведений с ценами. Я пытаюсь получить в одной колонке все цены из регистра по указанной номенклатуре, а в другой колонке предыдущую цену. Вот мой запрос, он позволяет мне получить предыдущую цену, но саму цену дублирует по срезу последних. В чем может быть проблема? ВЫБРАТЬ МАКСИМУМ(ЦеныНоменклатурыПоставщиков.Период) КАК Период, ЦеныНоменклатурыПоставщиков.Номенклатура КАК Номенклатура, ЦеныНоменклатурыПоставщиков.Цена КАК ПредыдущаяЦена, ВложенныйЗапрос.Цена КАК Цена ИЗ РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЦеныНоменклатурыПоставщиковСрезПоследних.Период КАК Период, ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура КАК Номенклатура, ЦеныНоменклатурыПоставщиковСрезПоследних.Цена КАК Цена ИЗ РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних КАК ЦеныНоменклатурыПоставщиковСрезПоследних) КАК ВложенныйЗапрос ПО ЦеныНоменклатурыПоставщиков.Номенклатура = ВложенныйЗапрос.Номенклатура И ЦеныНоменклатурыПоставщиков.Период < ВложенныйЗапрос.Период ГДЕ ЦеныНоменклатурыПоставщиков.Номенклатура = &Номенклатура СГРУППИРОВАТЬ ПО ЦеныНоменклатурыПоставщиков.Номенклатура, ЦеныНоменклатурыПоставщиков.Цена, ВложенныйЗапрос.Цена
|
|||
1
Волшебник
25.07.25
✎
21:26
|
Добавьте ИТОГИ ПО
|
|||
2
Волшебник
25.07.25
✎
21:29
|
Когда от запроса требуют какую-то фигню, я понимаю, что это какая-то жертва СКД, которая пытается втиснуть бизнес-логику в запрос.
Освойте временные таблицы, уже сразу станет жить полегче. А ещё лучше перестаньте делать всякую фигню! |
|||
3
mikecool
25.07.25
✎
21:42
|
(0) не использовать срезы
|
|||
4
Barry
25.07.25
✎
22:56
|
(3) попробовал с объединением, но теперь нужно их как-то склеить по строчкам, а то расползлись):
ВЫБРАТЬ ЦеныНоменклатурыПоставщиков.Период КАК Период, ЦеныНоменклатурыПоставщиков.Номенклатура КАК Номенклатура, 0 КАК ПредыдущаяЦена, ЦеныНоменклатурыПоставщиков.Цена КАК Цена ИЗ РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков ГДЕ ЦеныНоменклатурыПоставщиков.Номенклатура = &Номенклатура ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЦеныНоменклатурыПоставщиков.Период, ЦеныНоменклатурыПоставщиков.Номенклатура, ЦеныНоменклатурыПоставщиков.Цена, 0 ИЗ РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЦеныНоменклатурыПоставщиковСрезПоследних.Период КАК Период, ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура КАК Номенклатура, ЦеныНоменклатурыПоставщиковСрезПоследних.Цена КАК Цена ИЗ РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних КАК ЦеныНоменклатурыПоставщиковСрезПоследних) КАК ВложенныйЗапрос ПО ЦеныНоменклатурыПоставщиков.Номенклатура = ВложенныйЗапрос.Номенклатура И ЦеныНоменклатурыПоставщиков.Период < ВложенныйЗапрос.Период ГДЕ ЦеныНоменклатурыПоставщиков.Номенклатура = &Номенклатура
|
|||
5
Волшебник
26.07.25
✎
10:27
|
(4) чушь
|
|||
6
TormozIT
гуру
26.07.25
✎
11:10
|
Это частный случай задачи "Срез последних на каждую дату в запросе". В ИР решается нажатием одной кнопки после настройки связи таблиц https://www.hostedredmine.com/issues/1006018 . В твоем случае таблицы будут одинаковы и условие сравнения дат будет строго меньше/больше.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |