Имя: Пароль:
1C
1С v8
Выбрать Первые 4 из группировки
0 shane13
 
25.06.13
09:20
Добрый день. Необходимо получить количество по 4-м последним продажам по списку клиентов, которые были в магазине за определенный период.
Пишу запрос:

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

//////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 4
   Клиенты.Клиент КАК Клиент,
   ПродажиОбороты.Период КАК Период,
   ПродажиОбороты.КоличествоОборот КАК Количество
ИЗ
   ВТКлиенты КАК Клиенты
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(, &КонДата, Регистратор, ) КАК ПродажиОбороты
       ПО Клиенты.Клиент = ПродажиОбороты.Клиент

УПОРЯДОЧИТЬ ПО
   Период УБЫВ
ИТОГИ
   СУММА(Количество)
ПО
   Клиент

Так выводит только 4 количество по 4-м последним продажам, а мне нужно 4 последних продажи по каждому клиенту.. Помогите пжлста!!!
1 Нуф-Нуф
 
25.06.13
09:21
Пронумеруй строки в запросе и выбери с нужными номерами
2 SeregaMW
 
25.06.13
09:22
(1) Красавчиг уважуха тебе! Лаконичное решение!
3 SeregaMW
 
25.06.13
09:27
4 SeregaMW
 
25.06.13
09:29
(0) В анкете фото сына? А то у меня твоя анкета вызвала когнитивный диссонанс!
5 shane13
 
25.06.13
09:38
(4) Ахаха, это я года 3-4 назад))
6 shane13
 
25.06.13
09:40
(1), что-то не выходит, соединила ВТКлиенты с самой собой, чтобы пронумеровать строки нарастающим итогом - тут всё ок, дальше в условиях пишу Номер <=4 (номер - это моё поле с нумерацией) и нифига..
7 SeregaMW
 
25.06.13
09:56
(6) Давай запрос выкладывай, тут телепатов нет!
8 mozzga
 
25.06.13
09:57
(6) Клиенты+Нумеруй продажи и в условии пиши Номер<=4
9 shane13
 
25.06.13
10:20
Вот пакетный запрос:

ВЫБРАТЬ
   ПродажиОбороты.Клиент
ПОМЕСТИТЬ ВТКлиенты
ИЗ
   РегистрНакопления.Продажи.Обороты(&НачДата, &КонДата, , ВидПродажи = &Клиенту) КАК ПродажиОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПродажиОбороты.Период,
   ПродажиОбороты.Клиент,
   1 КАК Номер,
   ПродажиОбороты.КоличествоОборот
ПОМЕСТИТЬ ВТПродажи
ИЗ
   РегистрНакопления.Продажи.Обороты(, &КонДата, Регистратор, ) КАК ПродажиОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТКлиенты.Клиент КАК Клиент,
   СУММА(ВТПродажи.Номер) КАК Номер,
   ВТПродажи.Период КАК Период,
   ВТПродажи.КоличествоОборот КАК КоличествоОборот
ИЗ
   ВТКлиенты КАК ВТКлиенты
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(, &КонДата, Регистратор, ) КАК ПродажиОбороты
           ЛЕВОЕ СОЕДИНЕНИЕ ВТПродажи КАК ВТПродажи
           ПО ПродажиОбороты.Клиент = ВТПродажи.Клиент
               И ПродажиОбороты.Период >= ВТПродажи.Период
       ПО ВТКлиенты.Клиент = ПродажиОбороты.Клиент
ГДЕ
   ВТПродажи.Номер <= 4

СГРУППИРОВАТЬ ПО
   ВТКлиенты.Клиент,
   ВТПродажи.Период,
   ВТПродажи.КоличествоОборот

УПОРЯДОЧИТЬ ПО
   Клиент,
   Период УБЫВ
ИТОГИ
   СУММА(КоличествоОборот)
ПО
   Клиент
10 Laerys
 
25.06.13
10:44
ГДЕ
   ВТПродажи.Номер <= 4
у тебя там 1-ца
просто пронумеруй строки в запросе и не извращайся
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший