Имя: Пароль:
1C
1С v8
Как в запросе выбрать первые 10 записей по группировке ?
0 orakool
 
24.04.12
12:04
Казалось бы простейшая задача:
Есть таблица "Продажи" с полями Год, Номенклатура, Сумма.
Нужно в запросе выбрать десять номенклатурных позиций с самыми большими оборотами за КАЖДЫЙ год.

Что-то не могу понять как это можно сделать ОДНИМ запросом.
Есть идеи ?
1 КМ155
 
24.04.12
12:05
(0) Having
2 orakool
 
24.04.12
12:12
(0) Результат должен выглядеть следующим образом:

2009
 01. Номенклатура 5
 02. Номенклатура 4
 ...
 10. Номенклатура 7

2010
 01. Номенклатура 4
 02. Номенклатура 6
 ...
 10. Номенклатура 1
3 acsent
 
24.04.12
12:13
проще при выводе отсекать
4 orakool
 
24.04.12
12:13
(1) Каким образом Having сможет наложить ограничение на количество элементов в группировке ?
5 Ненавижу 1С
 
гуру
24.04.12
12:20
не надо так делать:

ВЫБРАТЬ
   ПродажиОбороты.Период КАК Период,
   ПродажиОбороты.Номенклатура КАК Номенклатура,
   ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот
ИЗ
   РегистрНакопления.Продажи.Обороты(, , Год, ) КАК ПродажиОбороты
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(, , Год, ) КАК ПродажиОбороты1
       ПО ПродажиОбороты.Период = ПродажиОбороты1.Период
           И (ПродажиОбороты.СтоимостьОборот < ПродажиОбороты1.СтоимостьОборот
               ИЛИ ПродажиОбороты.СтоимостьОборот = ПродажиОбороты1.СтоимостьОборот
                   И ПродажиОбороты.Номенклатура < ПродажиОбороты1.Номенклатура)

СГРУППИРОВАТЬ ПО
   ПродажиОбороты.Период,
   ПродажиОбороты.Номенклатура,
   ПродажиОбороты.СтоимостьОборот

ИМЕЮЩИЕ
   КОЛИЧЕСТВО(ПродажиОбороты.Номенклатура) < 10

УПОРЯДОЧИТЬ ПО
   Период,
   СтоимостьОборот УБЫВ,
   Номенклатура
6 orakool
 
24.04.12
12:41
(5) скорость исполнения запроса... кхм.. впечатляет 8)
Основная теорема систематики: Новые системы плодят новые проблемы.