Запрос (выбрать 10 самых крупных по Сумме сделки по каждому Контрагенту)
Нужно выбрать 10 самых крупных по Сумме сделки по каждому Контрагенту. Не понимаю, как это реализовать? Подскажите, пожалуйста.
Вот запрос, который выбирает все сделки и их Суммы по каждому Контрагенту. В порядке убывания Суммы по каждому. Но суммы получаются все. А мне нужно только первые 10 (т.е. десять самых больших сумм). Явно что-то нужно делать по другому. Как из этого выбрать десять первых?
Вот запрос, который выбирает все сделки и их Суммы по каждому Контрагенту. В порядке убывания Суммы по каждому. Но суммы получаются все. А мне нужно только первые 10 (т.е. десять самых больших сумм). Явно что-то нужно делать по другому. Как из этого выбрать десять первых?
ВЫБРАТЬ
Сделка.Контрагент,
Сделка.СуммаРуб
ИЗ
Документ.Сделка КАК Сделка
УПОРЯДОЧИТЬ ПО
Сделка.Контрагент,
Сделка.СуммаРуб Убыв
ИТОГИ
Сумма(Сделка.СуммаРуб)
ПО
Сделка.Контрагент
ПоказатьПо теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Итоги вам точно не нужны.
Если Сделка в вашем понимании это сам документ, то:
1. Добавьте ссылку в результат запроса и поместить во временную таблицу
2. Соединить временную таблицу из п.1 саму с собой по равенству контрагента и по T1.Сумма >= (или <=) T2.Сумма, добавить поле Сумма(1) как количество сделок, группируя по Сделка, Контрагент, Сумма. Поместить во временную таблицу
3. Выбрать из временной таблицы из п.2 с отбором где КоличествоСделок <= 10.
Итоги вам точно не нужны.
Если Сделка в вашем понимании это сам документ, то:
1. Добавьте ссылку в результат запроса и поместить во временную таблицу
2. Соединить временную таблицу из п.1 саму с собой по равенству контрагента и по T1.Сумма >= (или <=) T2.Сумма, добавить поле Сумма(1) как количество сделок, группируя по Сделка, Контрагент, Сумма. Поместить во временную таблицу
3. Выбрать из временной таблицы из п.2 с отбором где КоличествоСделок <= 10.
ЕМНИП, как-то через коррелирующий подзапрос можно было.
Попробуй что-то типа такого
ЗЫ. Если так не взлетит, тогда в условии соединения. Но точно делается.
Попробуй что-то типа такого
ВЫБРАТЬ
*
ИЗ
Документ.Сделка КАК Сделки
ГДЕ
Сделки.Ссылка
В (ВЫБРАТЬ ПЕРВЫЕ 10 Ссылка
ИЗ
Документ.Сделка КАК Сделки1
ГДЕ
Сделки1.Контрагент = Сделки.Контрагент
УПОРЯДОЧИТЬ ПО
Сделки1.Сумма УБЫВ)
ПоказатьЗЫ. Если так не взлетит, тогда в условии соединения. Но точно делается.
Можно так попробовать
ВЫБРАТЬ
Т.Контрагент КАК Контрагент,
Т.СуммаРуб КАК СуммаРуб
ИЗ
Документ.Сделка КАК Т
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Сделка КАК Т2
ПО Т.Контрагент = Т2.Контрагент
И Т.СуммаРуб <= Т2.СуммаРуб
И Т.МоментВремени >= Т2.МоментВремени
СГРУППИРОВАТЬ ПО
Т.Контрагент,
Т.СуммаРуб
ИМЕЮЩИЕ
КОЛИЧЕСТВО(*) <= 10
УПОРЯДОЧИТЬ ПО
Т.Контрагент,
Т.СуммаРуб УБЫВ
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот