|
Как в запросе просуммировать данные между периодами |
☑ |
0
Паспарту
25.01.21
✎
15:22
|
Есть 2 таблицы.
В одной - данный по дням - дата и пробег авто за день.
В другой - заданный маршрут для авто - задается несколько раз в месяц.
Как проссумировать пробег между датами изменения?
Т.е. с 01 по 12 января маршрут А проехал 1260 км.
12 января утановлен новый маршрут "В" - по нему проехали 1680 км.
28 января установлен новый маршрут "С" - по нему до конца месяца проехали 310 км.
Как проссумировать данные первой таблицы по промежуткам?
Задача идентична задаче суммирования работы сотрудников за месяц по разным штаткам.
|
|
1
Beduin
25.01.21
✎
15:25
|
Если маршруты в виде дат заданы, то левым соединением к нему цепляешь данные по дням а потом группируешь по маршрутам суммируя что надо
|
|
2
Ненавижу 1С
гуру
25.01.21
✎
15:26
|
(0) если в один день два маршрута?
|
|
3
Паспарту
25.01.21
✎
15:29
|
(2)группировка идет по маршрутам, в 1 день возможны 2 и более документов на 1 маршрут. например машина доставляла товар на базу 4 раза.
В этом случае - суммируем
|
|
4
vicof
25.01.21
✎
15:31
|
Регистры расчета в помощь
|
|
5
fisher
25.01.21
✎
15:31
|
1. Сначала получить таблицу с промежутками (можно приемом, аналогичным "срезу последних на каждый день") - т.е. где кроме даты начала действия маршрута будет и дата окончания действия.
2. В соединении таблицы пробега с полученной таблицей одно из условий соединения - условие на вхождение даты пробега в период действия маршрута.
|
|
6
Паспарту
25.01.21
✎
15:33
|
(5)а нет ли примера ? Или где посмотреть ? А то туплю
|
|
7
fisher
25.01.21
✎
15:55
|
(6) По первому пункту навскидку что-то типа такого, но за правильность не ручаюсь:
ВЫБРАТЬ
ДатыНачалМаршрутов.Автомобиль,
ДатыНачалМаршрутов.Маршрут,
ВЫБОР
КОГДА ДатыНачалМаршрутов.Период < &НачалоПериода
ТОГДА &НачалоПериода
ИНАЧЕ ДатыНачалМаршрутов.Период
КОНЕЦ КАК ДатаНачала,
ЕСТЬNULL(МИНИМУМ(ДатыОкончанийМаршрутов.Период), &КонецПериода) КАК ДатаОкончания
ИЗ
МаршрутыАвтомобилей КАК ДатыНачалМаршрутов
ЛЕВОЕ СОЕДИНЕНИЕ МаршрутыАвтомобилей КАК ДатыОкончанийМаршрутов
ПО ДатыНачалМаршрутов.Автомобиль = ДатыОкончанийМаршрутов.Автомобиль
И ДатыОкончанийМаршрутов.Период > ДатыНачалМаршрутов.Период
ГДЕ
ДатыНачалМаршрутов.Период МЕЖДУ &НачалоПериода И &КонецПериода
ИЛИ ДатыОкончанийМаршрутов.Период МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
ДатыНачалМаршрутов.Автомобиль,
ДатыНачалМаршрутов.Маршрут,
ВЫБОР
КОГДА ДатыНачалМаршрутов.Период < &НачалоПериода
ТОГДА &НачалоПериода
ИНАЧЕ ДатыНачалМаршрутов.Период
КОНЕЦ
|
|
8
fisher
25.01.21
✎
16:02
|
Так я и знал. Как минимум в вышеприведенный запрос нужно добавить еще проверку на выход даты окончания за период отчета и замену ее в этом случае на дату конца периода отчета.
Может и еще где ошибся.
|
|
9
Паспарту
25.01.21
✎
16:21
|
(8)да, верно
|
|
10
Паспарту
25.01.21
✎
16:28
|
(7)вроде похож на верный...на первый взгляд. Спасибо.
Думаю в сумме с (8) должен работать
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший