Вход | Регистрация
 

Как в запросе просуммировать данные между периодами

Как в запросе просуммировать данные между периодами
Я
   Паспарту
 
25.01.21 - 15:22
Есть 2 таблицы.
В одной - данный по дням - дата и пробег авто за день.
В другой - заданный маршрут для авто - задается несколько раз в месяц.
Как проссумировать пробег между датами изменения?

Т.е. с 01 по 12 января маршрут А проехал 1260 км.
12 января утановлен новый маршрут "В" - по нему проехали 1680 км.
28 января установлен новый маршрут "С" - по нему до конца месяца проехали 310 км.

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

   fisher
 
8 - 25.01.21 - 16:02
Так я и знал. Как минимум в вышеприведенный запрос нужно добавить еще проверку на выход даты окончания за период отчета и замену ее в этом случае на дату конца периода отчета.
Может и еще где ошибся.
   Паспарту
 
9 - 25.01.21 - 16:21
(8)да, верно
   Паспарту
 
10 - 25.01.21 - 16:28
(7)вроде похож на верный...на первый взгляд. Спасибо.
Думаю в сумме с (8) должен работать

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.