|
Отобрать максимальное из количеств в запросе | ☑ | ||
---|---|---|---|---|
0
dkonakov
18.10.13
✎
13:43
|
Есть такой запрос:
ВЫБРАТЬ ДоговорыКонтрагентов.ОсновнойМенеджерПокупателя КАК Менеджер, КОЛИЧЕСТВО(ДоговорыКонтрагентов.ОсновнойМенеджерПокупателя) КАК Количество ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов ГДЕ ДоговорыКонтрагентов.ОсновнойМенеджерПокупателя.Ссылка <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) И ДоговорыКонтрагентов.Владелец.Ссылка = &Ссылка И ДоговорыКонтрагентов.ВидДоговора.Ссылка = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем) И ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ СГРУППИРОВАТЬ ПО ДоговорыКонтрагентов.ОсновнойМенеджерПокупателя Как-то можно отобрать максимальное количество и вывести только его. Если максимальных значений 2, выводить оба. ? |
|||
1
Maxus43
18.10.13
✎
13:46
|
разве может быть 2 основных вобще?
|
|||
2
Tateossian
18.10.13
✎
13:47
|
(0) Не разыменовывай по полю .ссылка - это не оптимально
|
|||
3
dkonakov
18.10.13
✎
13:48
|
(1) у меня переписанная УТ. У меня основнойМенеджерКонтрагента - это поле договора. Не спрашивайте почему, специфика организации.
|
|||
4
pessok
18.10.13
✎
13:48
|
делай пакет: 3 запроса
первый - получаешь количество договоров по менеджеру второй - выбираешь из результата первого запроса первый элемент с сортировкой количества по убыванию третий - снова перебираешь первый, с условием, где количество = твоему максимальному количеству как-то пятнично получилось |
|||
5
dkonakov
18.10.13
✎
13:48
|
(2) Спасибо за совет. А как выбрать максимальное не знаете?
|
|||
6
exwill
18.10.13
✎
13:49
|
(0) Два максимальных количества - это круто.
Одно максимальное, а другое еще максимальнее. Так что ли? |
|||
7
pessok
18.10.13
✎
13:50
|
+(4) но, вообще, (0) попахивает бредом
|
|||
8
pessok
18.10.13
✎
13:51
|
(6) вангую, что имелось ввиду
6 - вася 6 - петя |
|||
9
dk
18.10.13
✎
13:51
|
Вложенный запрос поверх твоего
Выбрать МАКСИМУМ(Количество) Количество ИЗ (<тут твой текст запроса>) |
|||
10
dkonakov
18.10.13
✎
13:51
|
(6) Нет, они равны, значит они оба попадают в группу максимального числа.
|
|||
11
dkonakov
18.10.13
✎
13:53
|
(9) Делал, выводит тот же самый результат.
|
|||
12
MKZM
18.10.13
✎
13:53
|
имеющие having
|
|||
13
exwill
18.10.13
✎
13:53
|
(10) Т.е тебе надо вывести два одинаковых максимальных числа?
А зачем? Они же равны. Чем одно не устраивает? |
|||
14
MKZM
18.10.13
✎
13:54
|
имеющие МАКСИМУМ(Количество)
|
|||
15
exwill
18.10.13
✎
13:56
|
(14) МАКСИМУМ(Количество)=чему?
|
|||
16
dk
18.10.13
✎
13:57
|
(11) так не бывает
|
|||
17
dkonakov
18.10.13
✎
13:57
|
Я поясню для чего мне это. Я отбираю максимальные количества договоров менеджеров, если их равное количество, то есть количество строк в запросе > 1 то перехожу к следующему контрагенту.
Если у меня 1 максимальное значение, то я выполняю определенное действие с контрагентом. |
|||
18
mrDSide
18.10.13
✎
13:57
|
(0) делаешь так:
ВЫБРАТЬ ДоговорыКонтрагентов.ОсновнойМенеджерПокупателя КАК Менеджер, КОЛИЧЕСТВО(ДоговорыКонтрагентов.ОсновнойМенеджерПокупателя) КАК Количество ПОМЕСТИТЬ врТаб ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов ГДЕ ДоговорыКонтрагентов.ОсновнойМенеджерПокупателя.Ссылка <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) И ДоговорыКонтрагентов.Владелец.Ссылка = &Ссылка И ДоговорыКонтрагентов.ВидДоговора.Ссылка = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем) И ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ СГРУППИРОВАТЬ ПО ДоговорыКонтрагентов.ОсновнойМенеджерПокупателя; ВЫБРАТЬ 1, МАКСИМУМ(врТаб.Количество) ИЗ врТаб КАК врТаб СГРУППИРОВАТЬ ПО 1 |
|||
19
mrDSide
18.10.13
✎
13:58
|
(17) ВЫБРАТЬ Менеджер, МАКСИМУМ(врТаб.Количество) ИЗ врТаб КАК врТаб СГРУППИРОВАТЬ ПО Менеджер
|
|||
20
dkonakov
18.10.13
✎
13:59
|
(16) Вы правы, прощу прощения, группировку не убрал. Сейчас проверю на другом контрагенте.
|
|||
21
dk
18.10.13
✎
13:59
|
(18) для максимума группировка не обязательна
|
|||
22
exwill
18.10.13
✎
13:59
|
(17) СОЕДИНЕНИЕ тебе поможет.
|
|||
23
pessok
18.10.13
✎
13:59
|
(17) противоречит (0), блджад!
если (0), то (4), если (17), то (9) |
|||
24
dkonakov
18.10.13
✎
14:02
|
(21) да, работает, но если я буду отображать в запросе поле Менеджера, то максимум не сработает, увы.
ВЫБРАТЬ МАКСИМУМ(ВложенныйЗапрос.Количество) КАК Количество, ВложенныйЗапрос.Менеджер ИЗ Выведет всех. ВЫБРАТЬ МАКСИМУМ(ВложенныйЗапрос.Количество) КАК Количество2, ИЗ Выведет только максимальное значение. |
|||
25
mrDSide
18.10.13
✎
14:03
|
(0) + (17) на 100% решает (4)
|
|||
26
dk
18.10.13
✎
14:06
|
(24) а теперь надо поместить твой запрос во временную а потом сделать
Выбрать Менеджер , Количество Из <Временая> ИМЕЮЩИЕ или ГДЕ Количество = МАКСИМУМ(КОЛИЧЕСТВО) |
|||
27
MKZM
18.10.13
✎
14:07
|
(15) Что-то вроде этого
ВЫБРАТЬ ВложенныйЗапрос.Документ, ВложенныйЗапрос.КоличествоСтрок ИЗ (ВЫБРАТЬ ЗаказПокупателяТовары.Ссылка КАК Документ, КОЛИЧЕСТВО(ЗаказПокупателяТовары.НомерСтроки) КАК КоличествоСтрок ИЗ Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары СГРУППИРОВАТЬ ПО ЗаказПокупателяТовары.Ссылка) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Документ, ВложенныйЗапрос.КоличествоСтрок ИМЕЮЩИЕ ВложенныйЗапрос.КоличествоСтрок = МАКСИМУМ(ВложенныйЗапрос.КоличествоСтрок) |
|||
28
dkonakov
18.10.13
✎
14:07
|
(26) Хорошая мысль, спасибо, сейчас попробую.
|
|||
29
pessok
18.10.13
✎
14:09
|
(28) супер! :) когда пишут текстом - молчок, когда тоже самое готовым кодом - радость :) Вы таки так ничему не научитесь
|
|||
30
dkonakov
18.10.13
✎
14:11
|
(27) нет, так не получится, только что проверял.
|
|||
31
User_Agronom
18.10.13
✎
14:14
|
(0) Из того что вижу: ты сворачиваешь по основному менеджеру. Поэтому в результате каждый менеджер будет один раз.
Если нужно максимальное - попробуй упорядочить и взять первую строку. |
|||
32
dkonakov
18.10.13
✎
14:17
|
(29) я посмотрел на предложенное Вами решение (4). Давайте подискутируем, что вы имели ввиду.
1. Оставляем по сути мой первый запрос. 2. Выбрать ПЕРВЫЕ 1 менеджер, количество из РезультатЗапроса Сортировка по убыванию. 3. Выбрать из 1 тоже самое, но с условием что количество равно количеству из 2. Верно вас понял? |
|||
33
pessok
18.10.13
✎
14:19
|
(32) верно. только не из результата запроса, а из временной таблицы
|
|||
34
dkonakov
18.10.13
✎
14:24
|
(33) То есть я помещаю результат запроса в ВТ. Ок. Сейчас изображу и продемонстрирую :)
|
|||
35
dkonakov
18.10.13
✎
15:00
|
(33)
А если вот так? ВЫБРАТЬ ДоговорыКонтрагентов.ОсновнойМенеджерПокупателя КАК Менеджер, КОЛИЧЕСТВО(ДоговорыКонтрагентов.ОсновнойМенеджерПокупателя) КАК Количество ПОМЕСТИТЬ ВРЕМЕННАЯ ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов ГДЕ ДоговорыКонтрагентов.ОсновнойМенеджерПокупателя.Ссылка <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) И ДоговорыКонтрагентов.Владелец.Ссылка = &Ссылка И ДоговорыКонтрагентов.ВидДоговора.Ссылка = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем) И ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ СГРУППИРОВАТЬ ПО ДоговорыКонтрагентов.ОсновнойМенеджерПокупателя; ВЫБРАТЬ Менеджер, Количество ИЗ ВРЕМЕННАЯ ГДЕ Количество В (ВЫБРАТЬ ПЕРВЫЕ 1 КОЛИЧЕСТВО из ВРЕМЕННАЯ УПОРЯДОЧИТЬ ПО КОЛИЧЕСТВО УБЫВ); |
|||
36
dkonakov
18.10.13
✎
15:57
|
Хочется всех от души поблагодарить за оказанное содействие, всё у меня получилось, как задумывалось!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |