|
Выбрать предыдущую запись в запросе | ☑ | ||
---|---|---|---|---|
0
alexmobile
03.09.15
✎
07:08
|
Из таблицы выбираются значения на определенные даты, если значение не задано на дату, то брать предыдущее. Не могу сообразить как составить запрос.
пример: Дата,код инструмента, значение 01.01.2015, Инстр1, 100 01.01.2015, Инстр2, 500 02.01.2015, Инстр1, 1000 02.01.2015, Инстр2, 0 нужно на 02.01.2015 для инстр2 получить с даты 01.01.2015, т.е. 500 |
|||
1
Маратыч
03.09.15
✎
07:10
|
(0) Что за таблица-то? Если РС, то СрезПоследних(), если что-то другое, тупо отбирай Значение>0
|
|||
2
Брегорьян
03.09.15
✎
07:10
|
делай лучше потом
|
|||
3
alexmobile
03.09.15
✎
07:14
|
(1) внешние данные
|
|||
4
Cyberhawk
03.09.15
✎
07:14
|
Выбираешь всю таблицу с доп. полем: где значение не задано, там в доп. поле пишешь 0, где задано - 1. Далее выбираешь первые 1 с условием на доп. поле ( = 1)
|
|||
5
Cyberhawk
03.09.15
✎
07:15
|
Либо изначально отбираешь по значению, как в (1), и группируешь по инструменту и максимуму периода
|
|||
6
alexmobile
03.09.15
✎
15:25
|
(5) не пойдет.
вот кусок таблицы: CodeInstr Date Среднее ГодНазад A592UFM060F 26.12.2014 0:00:00 31 404 A592UFM060F 09.01.2015 0:00:00 29 200 A592UFM060F 10.01.2015 0:00:00 29 200 A592UFM060F 12.01.2015 0:00:00 31 529 A592UFM060F 13.01.2015 0:00:00 31 400 29 200 A592UFM060F 14.01.2015 0:00:00 31 300 29 264 A592UFM060F 15.01.2015 0:00:00 31 000 29 396 A592UFM060F 16.01.2015 0:00:00 31 000 29 413 A592UFM060F 17.01.2015 0:00:00 29 559 A592UFM060F 19.01.2015 0:00:00 30 500 A592UFM060F 20.01.2015 0:00:00 29 500 29 614 A592UFM060F 21.01.2015 0:00:00 29 200 30 099 A592UFM060F 22.01.2015 0:00:00 28 135 30 730 A592UFM060F 23.01.2015 0:00:00 28 000 31 244 A592UFM060F 24.01.2015 0:00:00 31 167 A592UFM060F 26.01.2015 0:00:00 28 000 A592UFM060F 27.01.2015 0:00:00 28 400 31 150 A592UFM060F 28.01.2015 0:00:00 28 180 31 150 A592UFM060F 29.01.2015 0:00:00 28 000 31 000 A592UFM060F 30.01.2015 0:00:00 28 000 31 039 A592UFM060F 31.01.2015 0:00:00 31 054 A592UFM060F 02.02.2015 0:00:00 28 000 A592UFM060F 03.02.2015 0:00:00 27 650 31 092 A592UFM060F 04.02.2015 0:00:00 28 217 31 147 A592UFM060F 05.02.2015 0:00:00 28 587 31 045 A592UFM060F 06.02.2015 0:00:00 28 524 31 097 в колонку среднее на дату 09.01 и 10.01 должно встать 31404, на дату 17.01 31 000, 24.01 28 000 и т.д. |
|||
7
Cyberhawk
03.09.15
✎
17:13
|
Не понял. Входную таблицу твою вижу. Часть примера вижу. Но не понял, как формируется выходная таблица? Почему даты выборочно берешь? Нарисуй, какой должна быть выходная таблица и опиши правила ее формирования до конца
|
|||
8
Nuobu
03.09.15
✎
17:24
|
(6) Разбей свою таблицу на две таблички, заполненную датами и не заполненную и сделай как в ссылке.
Книга знаний: Срез последних на каждую дату в запросе |
|||
9
AndreYAN
03.09.15
✎
17:25
|
Итоги по датам не предлагали?
|
|||
10
Nuobu
03.09.15
✎
17:26
|
(9) Ха, поздно.
|
|||
11
AndreYAN
03.09.15
✎
17:33
|
Запрос = Новый Запрос("ВЫБРАТЬ
| ИсточникДанных.Дата КАК Дата, | ИсточникДанных.Номенклатура КАК Номенклатура, | ИсточникДанных.Количество КАК Количество |ИЗ Данные КАК ИсточникДанных |ИТОГИ | СУММА(Количество) |ПО | Дата"); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДата = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ПредыдущееКоличество = 0; Пока ВыборкаДата.Следующий() Цикл ВыборкаДетальныеЗаписи = ВыборкаДата.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ПредыдущееКоличество = ВыборкаДетальныеЗаписи.Количество; КонецЦикла; КонецЦикла; |
|||
12
alexmobile
04.09.15
✎
07:27
|
(11) в СКД хотелось-бы. Такой уж вариант думал, но на крайний случай.
|
|||
13
alexmobile
04.09.15
✎
07:27
|
(8) срезы актуальны для регистров. нет?
|
|||
14
Sewace
04.09.15
✎
08:38
|
Итак, нужно выбрать предыдущую строку в выборке.
Значит: 1. Есть точное условие сортировки. 2. Есть возможность, наложив условие, выбрать текущую запись. Делал бы так: ВЫБРАТЬ ПЕРВЫЕ 2 .... ПОМЕСТИТЬ ВремТЗ ИЗ ... ГДЕ <условие на текущую запись> УПОРЯДОЧИТЬ ПО <порядок в одну сторону>; ВЫБРАТЬ ПЕРВЫЕ 1 ИЗ ВремТЗ УПОРЯДОЧИТЬ ПО <порядок в другую сторону> |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |