|   |   | 
| 
 | Как в запросе выбрать сумму накопительно по периоду | ☑ | ||
|---|---|---|---|---|
| 0
    
        Слесарь74 01.06.21✎ 17:04 | 
        Прошу помочь советом.
 Есть таблица, где есть данные по дням (периодам). Надо запросом выбрать накопительно. Пример запроса: ВЫБРАТЬ Т.Дата КАК Дата, СУММА(Т.ФактическийСдельныйФОТ) КАК ФактическийСдельныйФОТ ИЗ ВТ_ТрудозатратыПоСотрудникам КАК Т ГДЕ Т.Дата >= &НачалоПериода И Т.Дата <= &КонецПериода СГРУППИРОВАТЬ ПО Т.Дата ---------- есть: 01.04.21 1000 02.04.21 1200 03.04.21 800 надо: 01.04.21 1000 02.04.21 2200 03.04.21 3000 | |||
| 1
    
        acht 01.06.21✎ 17:18 | 
        Левое соединение самого себя по дате меньше или равно и суммировать присоединенную таблицу     | |||
| 2
    
        Слесарь74 01.06.21✎ 17:38 | 
        не понял про "и суммировать присоединенную таблицу"     | |||
| 3
    
        Слесарь74 01.06.21✎ 17:39 | 
        что значит суммировать присоединенную таблицу. Можно на примере показать ?
 Был бы признателен | |||
| 4
    
        SleepyHead гуру 01.06.21✎ 17:39 | ||||
| 5
    
        Слесарь74 01.06.21✎ 17:43 | 
        (4) Спасибо!     | |||
| 6
    
        Said_We 01.06.21✎ 20:31 | 
        Жаль..., что нельзя писать как-то так:
 sum(ФактическийСдельныйФОТ) over(order by Дата rows between unbounded preceding and current row) Если перевести, то сумма значения колонки "ФактическийСдельныйФОТ" для строк между самой первой строкой и текущей. И нет тут никаких левых соединений и пишется это короче и выполняется это на порядок быстрее. | |||
| 7
    
        Ivan_495 naïve 01.06.21✎ 20:40 | 
        (6)  в скд есть такие функции и более серьезные для ресурсов.     | |||
| 8
    
        Ненавижу 1С гуру 01.06.21✎ 20:46 | 
        (6) по-моему достаточно 
 sum(ФактическийСдельныйФОТ) over(order by Дата) Остальное добавиться по-умолчанию | |||
| 9
    
        mikecool 01.06.21✎ 20:54 | 
        (7) дык он онду и описал     | |||
| 10
    
        Ненавижу 1С гуру 01.06.21✎ 20:56 | 
        (9) непонятно почему в языке запросов такое не сделали     | |||
| 11
    
        Said_We 01.06.21✎ 21:06 | 
        (8) В данном случае да, но для того, что бы вопросов не было написал как написал.     | |||
| 12
    
        Said_We 01.06.21✎ 21:09 | 
        (7) Эти функции в СКД выполняются на уровне SQL ?     | |||
| 13
    
        Ivan_495 naïve 01.06.21✎ 21:11 | 
        (12) да     | |||
| 14
    
        Said_We 01.06.21✎ 21:17 | 
        Точно? Просто я никогда не смотрел.     | |||
| 15
    
        Ivan_495 naïve 01.06.21✎ 21:20 | ||||
| 16
    
        Ivan_495 naïve 01.06.21✎ 21:21 | 
        внутренних функций системы компоновки данных     | |||
| 17
    
        Ненавижу 1С гуру 01.06.21✎ 21:37 | 
        (13) есть мнение, что нет     | |||
| 18
    
        Ivan_495 naïve 01.06.21✎ 21:49 | 
        (17) других вариантов все равно нет.     | |||
| 19
    
        Ненавижу 1С гуру 01.06.21✎ 21:50 | 
        (18) вот и поговорили     | |||
| 20
    
        Ivan_495 naïve 01.06.21✎ 21:52 | 
        можно и на sql напрямую написать , если очень надо)) работают они шустро. можно и план запроса посмотреть, есои все так серьезно.     | |||
| 21
    
        Said_We 01.06.21✎ 22:12 | 
        (17) Я никогда не смотрел, но всегда думал, что это вычисляемое поле, которое рассчитывается в самом конце средствами самой СКД.
 + Оконные функции часто применяются не в итоговом запросе, а как раз до него, например для функций: ROW_NUMBER(), RANK(), DENSE_RANK() (18) К сожалению да.... | |||
| 22
    
        Ivan_495 naïve 01.06.21✎ 22:21 | 
        есс- но функции вычислитьвыражение() нет в sql и не будет, если только вы ее сами не напишите и не будете дергать через ado     | |||
| 23
    
        Ненавижу 1С гуру 01.06.21✎ 22:28 | 
        (22) ну в зачем писать что вычисляется на стороне SQL?     | |||
| 24
    
        Said_We 04.06.21✎ 16:03 | 
        (23) Он сам, наверное, запутался. И написал.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |