Имя: Пароль:
1C
 
Как в запросе выбрать сумму накопительно по периоду
,
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
(2) https://helpf.pro/faq/view/955.html

в гугле забанили что ли?
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
 
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
 
01.06.21
21:11
(12) да
14 Said_We
 
01.06.21
21:17
Точно? Просто я никогда не смотрел.
15 Ivan_495
 
01.06.21
21:20
16 Ivan_495
 
01.06.21
21:21
внутренних функций системы компоновки данных
17 Ненавижу 1С
 
гуру
01.06.21
21:37
(13) есть мнение, что нет
18 Ivan_495
 
01.06.21
21:49
(17) других вариантов все равно нет.
19 Ненавижу 1С
 
гуру
01.06.21
21:50
(18) вот и поговорили
20 Ivan_495
 
01.06.21
21:52
можно и на sql напрямую написать , если очень надо)) работают они шустро. можно и план запроса посмотреть, есои все так серьезно.
21 Said_We
 
01.06.21
22:12
(17) Я никогда не смотрел, но всегда думал, что это вычисляемое поле, которое рассчитывается в самом конце средствами самой СКД.
+ Оконные функции часто применяются не в итоговом запросе, а как раз до него, например для функций: ROW_NUMBER(), RANK(), DENSE_RANK()

(18) К сожалению да....
22 Ivan_495
 
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) Он сам, наверное, запутался. И написал.