Имя: Пароль:
1C
1С v8
Подскажите, как реализовать в запросе
0 starz555
 
02.09.13
10:55
Есть справочник договоры:
В элементе справочника присутствуют реквизиты Владелец, район.
Данные, например такие:
Контрагент      | Район                    |Количество Договоров в районе
ООО "Первый" |Московский            |3
ООО "Первый" |Томский                  |4
ООО "Первый" |Александровский   |3
ООО "Второй"  |Московский            |3
ООО "Второй" |Томский                   |2
ООО "Второй" |Александровский    |1


Как выбрать в запросе  данные в виде:
Владелец/Район (с максимальным количеством договоров):
,то есть в итоге надо получить
ООО "Первый" |Томский                  |4
ООО "Второй"  |Московский            |3

Банально, наверное, просто догнать не могу.
Подскажите, кому не трудно, пожалуйста
1 butterbean
 
02.09.13
10:58
просто отсортировать что-ли??
2 йети
 
02.09.13
10:58
возможно поможет сортировка количеству договоров :)
3 Ёпрст
 
02.09.13
11:00
сгруппировать по владельцу , + максимум от количества - это в подзапрос, в основном запросе - условие на владельца и количество из подзапроса.
4 Starhan
 
02.09.13
11:04
Или левое соединение
5 starz555
 
02.09.13
11:08
Ёпрст, про подзапрос понял, а как в основном условие поставить так, чтобы отобрались только строки
с районом, в котором максимально количество договоров?
ВЫБРАТЬ
    Контрагенты.Ссылка КАК Владелец,
    ДоговорыКонтрагентов.РайонНовый КАК РайонНовый,
    КОЛИЧЕСТВО(ДоговорыКонтрагентов.Ссылка) КАК КоличествоДоговоров
ПОМЕСТИТЬ КоличествоПоРайонам
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        ПО Контрагенты.Ссылка = ДоговорыКонтрагентов.Владелец
ГДЕ
    НЕ Контрагенты.ЭтоГруппа
    И НЕ Контрагенты.ПометкаУдаления
    И НЕ ДоговорыКонтрагентов.ПометкаУдаления

СГРУППИРОВАТЬ ПО
    Контрагенты.Ссылка,
    ДоговорыКонтрагентов.РайонНовый
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КоличествоПоРайонам.Владелец КАК Владелец,
    КоличествоПоРайонам.РайонНовый,
    КоличествоДоговоров
    ИЗ
    КоличествоПоРайонам КАК КоличествоПоРайонам

УПОРЯДОЧИТЬ ПО
    Владелец
6 Ёпрст
 
02.09.13
11:22
ВЫБРАТЬ
    КоличествоПоРайонам.Владелец КАК Владелец,
    КоличествоПоРайонам.РайонНовый,
    КоличествоДоговоров
ИЗ
   КоличествоПоРайонам КАК КоличествоПоРайонам
Внутренее Соединение (выбрать КоличествоПоРайонам.Владелец КАК Владелец,Максимум(КоличествоПоРайонам.КоличествоДоговоров) как КоличествоДоговоров
ИЗ  КоличествоПоРайонам КАК КоличествоПоРайонам) как Табличка ПО  Табличка.Владелец = КоличествоПоРайонам.Владелец и Табличка.КоличествоДоговоров = КоличествоПоРайонам.КоличествоДоговоров

УПОРЯДОЧИТЬ ПО
    Владелец
7 Лодырь
 
02.09.13
11:27
Кстати, топикстартер не указал что нужно получить при равенстве:

ООО "Первый" |Московский            |2
ООО "Первый" |Томский               |2
8 starz555
 
02.09.13
11:37
Возможно, я не очень корректно сформулировал.
Всем спасибо за помощь. Разобрался.
В итоге так:
ВЫБРАТЬ
    ДоговорыКонтрагентов.Владелец,
    ДоговорыКонтрагентов.РайонНовый,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДоговорыКонтрагентов.Ссылка) КАК КоличествоДоговоров
ПОМЕСТИТЬ ВТ_КоличествоДоговоровПоРайонам
ИЗ
    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов

СГРУППИРОВАТЬ ПО
    ДоговорыКонтрагентов.Владелец,
    ДоговорыКонтрагентов.РайонНовый
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_КоличествоДоговоровПоРайонам.Владелец,
    МАКСИМУМ(ВТ_КоличествоДоговоровПоРайонам.КоличествоДоговоров) КАК КоличествоДоговоров
ПОМЕСТИТЬ ВТ_МаксимальноеКоличествоДоговоровВРайонеКонтрагента
ИЗ
    ВТ_КоличествоДоговоровПоРайонам КАК ВТ_КоличествоДоговоровПоРайонам

СГРУППИРОВАТЬ ПО
    ВТ_КоличествоДоговоровПоРайонам.Владелец
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_МаксимальноеКоличествоДоговоровВРайонеКонтрагента.Владелец КАК Владелец,
    ВТ_МаксимальноеКоличествоДоговоровВРайонеКонтрагента.КоличествоДоговоров,
    ВТ_КоличествоДоговоровПоРайонам.РайонНовый
ИЗ
    ВТ_МаксимальноеКоличествоДоговоровВРайонеКонтрагента КАК ВТ_МаксимальноеКоличествоДоговоровВРайонеКонтрагента
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КоличествоДоговоровПоРайонам КАК ВТ_КоличествоДоговоровПоРайонам
        ПО ВТ_МаксимальноеКоличествоДоговоровВРайонеКонтрагента.Владелец = ВТ_КоличествоДоговоровПоРайонам.Владелец
            И ВТ_МаксимальноеКоличествоДоговоровВРайонеКонтрагента.КоличествоДоговоров = ВТ_КоличествоДоговоровПоРайонам.КоличествоДоговоров

УПОРЯДОЧИТЬ ПО
    Владелец
9 Ёпрст
 
02.09.13
11:41
(7) это тоже можно обойти, тупо максимумом по району..:)
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.