Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Запрос: СУММА(КОЛИЧЕСТВО(ВТ.Причина)) либо в МАКСИМУМ(ВТ.Причина) в одном поле - как?

Запрос: СУММА(КОЛИЧЕСТВО(ВТ.Причина)) либо в МАКСИМУМ(ВТ.Причина) в одном поле - как?
Я
   N-S-B
 
24.07.19 - 12:31
Подскажите, как составить запрос, не могу сообразить.
В итоговой таблице 2 либо 1 строки, к одному из полей надо применять функцию КОЛИЧЕСТВО в случае, если строк 2, либо МАКСИМУМ, если строка 1.
То есть что-то вроде такого:
ВЫБОР КОГДА СУММА(КОЛИЧЕСТВО(ВТ.Причина)) > 1 ТОГДА КОЛИЧЕСТВО(ВТ.Причина) ИНАЧЕ МАКСИМУМ(ВТ.Причина) КОНЕЦ
Но использовать вложенные агрегирующие функции нельзя. Как сделать по другому?
 
 
   garmosha
 
1 - 24.07.19 - 12:33
количество это агрегатная функция..
тут вот пишут, что я брежу очень часто ..
но некоторые это еще в коде оформляют..
   garmosha
 
2 - 24.07.19 - 12:34
и еще .. узнайте функцию имеющие .. хевинг .. она вам поможет.
   garmosha
 
3 - 24.07.19 - 12:35
но тоже без групировки и агрегатов никак.
   dka80
 
4 - 24.07.19 - 12:38
Сделай через временную таблицу
Выбрать Максимум(Поле1) Как П1, Количество(Поле1) Как П2
Поместить ВТ
;
Выбрать Выбор Когда ВТ.П2>1 Тогда ВТ.П2 Иначе ВТ.П1
Из ВТ
   N-S-B
 
5 - 24.07.19 - 12:40
(4) Так в итоге и сделал, но есть ощущение, что есть решение красивее )
   garmosha
 
6 - 24.07.19 - 12:41
да нет .. какое красивое решение если у тебя несколько записей и Что-то должно посчитать их итог.
посчитать итог можно только циклом перебрав все записи - так 1с не умеет
или взяв агрегатную функцию.
   catena
 
7 - 24.07.19 - 12:41
Выбрать "Не смог" Причина, "Работа" Занятость поместить ТЗ
объединить все
Выбрать "Проспал", "Отпуск"
объединить все
Выбрать "Не смог", "Работа"
объединить все
Выбрать "Проспал", "Работа";

Выбрать Количество(Причина),Занятость из тз тз сгруппировать по Занятость имеющие Количество(Причина)>1
объединить все
Выбрать Максимум(Причина),Занятость из тз тз сгруппировать по Занятость имеющие Количество(Причина)<=1
   N-S-B
 
8 - 24.07.19 - 12:45
(7) Тоже интересное решение)

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