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

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