Имя: Пароль:
1C
1С v8
Сжатие таблицы по полю
0 McArt
 
01.03.12
09:58
В результате запроса получаем таблицу вида:
дата1 сотрудник1 сумма1
дата2 сотрудник1 сумма2
дата3 сотрудник2 сумма3
дата4 сотрудник2 сумма4
Как получить таблицу, где строка с сотрудником будет представлена лишь единожды с более поздней датой?
1 aleks-id
 
01.03.12
10:00
переписать запрос
2 McArt
 
01.03.12
10:03
Что добавить в запрос? Группировку, условие?
3 Kerk
 
01.03.12
10:23
(2) Надо писать много запросов... в первом ищешь записи с минимальной датой, во втором накладываешь условия по результатам первого запроса.
4 andrewks
 
01.03.12
10:25
а что делать с суммой? сложить? или только более позднюю сумму вывести?
5 andrewks
 
01.03.12
10:26
(3) может, проще min() заюзать?
6 McArt
 
01.03.12
10:29
(5) минимальная дата может соответствовать максимальной сумме. Вопрос в том и заключается, как выдернуть полностью строчку, где сотрудник одинаковый, а дата минимальная.
7 Kerk
 
01.03.12
10:39
(4) ничего с ней делать не нужно, как я понял...
8 Kerk
 
01.03.12
10:40
(5) При мин нужна группировка по всем полям, а ему нужно только по сотруднику.
9 Kerk
 
01.03.12
10:49
Вот как-то так...

ВЫБРАТЬ
   МИНИМУМ(НДФЛКЗачету.Период) КАК Период,
   НДФЛКЗачету.ФизЛицо
ПОМЕСТИТЬ вт_ПервыеЗаписи
ИЗ
   РегистрНакопления.НДФЛКЗачету КАК НДФЛКЗачету

СГРУППИРОВАТЬ ПО
   НДФЛКЗачету.ФизЛицо
;

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