Имя: Пароль:
1C
1С v8
Выбор строк запроса
0 Adgjj
 
07.12.11
13:23
ВЫБРАТЬ
   //КОЛИЧЕСТВО(РАЗЛИЧНЫЕ уатПервоначальныеСведенияТС.ГосударственныйНомер) КАК КоличНомер,
   уатПервоначальныеСведенияТС.ГосударственныйНомер,
   уатНормыРасходаГСМСрезПоследних.ГСМ
ИЗ
   РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатНормыРасходаГСМ.СрезПоследних КАК уатНормыРасходаГСМСрезПоследних
       ПО уатПервоначальныеСведенияТС.Модель = уатНормыРасходаГСМСрезПоследних.МодельТС
ГДЕ
   уатНормыРасходаГСМСрезПоследних.ГСМ <> &НоменПустаяСсылка

СГРУППИРОВАТЬ ПО
   уатПервоначальныеСведенияТС.ГосударственныйНомер,
   уатНормыРасходаГСМСрезПоследних.ГСМ

УПОРЯДОЧИТЬ ПО
   ГосударственныйНомер

Рез-т запроса:
http://s16.radikal.ru/i191/1112/28/cb5b6c0f9f21.jpg
Т.е. каждое авто работает или на 1 или на 2 видах ГСМ.
Скажите, пжл, как изменить запрос для вывода по каждому авто только первых строк, т.е. если у авто 1 вид гсм, брать эту строку; если по авто 2 строки, то брать верхнюю?
1 Adgjj
 
07.12.11
13:25
может по новой колонке КоличНомер, в к-рую (как??) выводить "1" для первых строк и "2" для вторых?
2 rs_trade
 
07.12.11
13:26
(0) нет такого критерия верхняя строка. там может оказаться любое значение из 2-х возможных. тебя это устраивает?
3 Ненавижу 1С
 
гуру
07.12.11
13:26
ща меня будут бить, но так:


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

СГРУППИРОВАТЬ ПО
   уатПервоначальныеСведенияТС.ГосударственныйНомер
4 Adgjj
 
07.12.11
13:27
(2) нет
5 Kreont
 
07.12.11
13:29
Через вложенный запрос, в нем задать сортировку и получить только одну запись
6 rs_trade
 
07.12.11
13:30
(4) а как? если два вида топлива, брать какое то конкретное. так?
7 Adgjj
 
07.12.11
13:31
(3) так получилось - с минимумом берет первую, с максимумом - вторую строку
8 Adgjj
 
07.12.11
13:32
(6) буду делать запрос ОБЪЕДИНИТЬ
для первой части буду использовать верхние втроки, для 2 - нижние
не конкретное, а которое в 1 или 2 строке
9 Adgjj
 
07.12.11
13:33
(8) потому что не известно, какие два вида топлива будут у каждого авто
10 rs_trade
 
07.12.11
13:46
(9) я подобное для видов цен делал. тоже через юнион. конечный выбор значения через кейсы. надо поискать запрос.
11 Adgjj
 
07.12.11
14:12
А КАК теперь выводить по 1 строке для каждого ГосударственныйНомер, наверно влож запросом только?

ВЫБРАТЬ
   уатПутевойЛистРасходГСМ.ТС КАК ТС,
   уатПервоначальныеСведенияТС.ГосударственныйНомер,
   уатПутевойЛистРасходГСМ.Ссылка,
   уатПутевойЛистРасходГСМ.Ссылка.Дата КАК РегистраторДата,
   уатПутевойЛистРасходГСМ.ОстатокПриВозвращении,
   МИНИМУМ(уатНормыРасходаГСМСрезПоследних.ГСМ) КАК ГСМ_ВЕРХНяяСТРОКА
ИЗ
   Документ.уатПутевойЛист.РасходГСМ КАК уатПутевойЛистРасходГСМ
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС
           ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатНормыРасходаГСМ.СрезПоследних КАК уатНормыРасходаГСМСрезПоследних
           ПО (уатНормыРасходаГСМСрезПоследних.МодельТС = уатПервоначальныеСведенияТС.Модель)
       ПО уатПутевойЛистРасходГСМ.ТС = уатПервоначальныеСведенияТС.ОсновноеСредство
ГДЕ
   уатПутевойЛистРасходГСМ.Ссылка.ПометкаУдаления = ЛОЖЬ
   И уатПутевойЛистРасходГСМ.Ссылка.Проведен = ИСТИНА
   И уатПутевойЛистРасходГСМ.Ссылка.Дата < &ДатаС
   И уатНормыРасходаГСМСрезПоследних.ГСМ <> &НоменПустаяСсылка

СГРУППИРОВАТЬ ПО
   уатПутевойЛистРасходГСМ.ТС,
   уатПервоначальныеСведенияТС.ГосударственныйНомер,
   уатПутевойЛистРасходГСМ.Ссылка,
   уатПутевойЛистРасходГСМ.Ссылка.Дата,
   уатПутевойЛистРасходГСМ.ОстатокПриВозвращении

УПОРЯДОЧИТЬ ПО
   ТС,
   РегистраторДата УБЫВ
12 Adgjj
 
07.12.11
15:48
Скажите, пжл, как можно переписать запрос для уменьшения скорости выполнения:
ВЫБРАТЬ
   уатПутевойЛистРасходГСМ.ТС ,
   влож.ГосударственныйНомер,
   уатПутевойЛистРасходГСМ.Ссылка регистратор,
   уатПутевойЛистРасходГСМ.Ссылка.Дата РегистраторДата ,
   уатПутевойЛистРасходГСМ.ОстатокПриВозвращении,
   уатПутевойЛистРасходГСМ.ГСМ,
   влож.ГСМ_ВЕРХНяяСТРОКА
ИЗ
   Документ.уатПутевойЛист.РасходГСМ КАК уатПутевойЛистРасходГСМ
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           уатПервоначальныеСведенияТС.ОсновноеСредство,
           уатПервоначальныеСведенияТС.ГосударственныйНомер,
           МИНИМУМ(уатНормыРасходаГСМСрезПоследних.ГСМ) КАК ГСМ_ВЕРХНяяСТРОКА
           ИЗ
                   РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС
                   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатНормыРасходаГСМ.СрезПоследних КАК уатНормыРасходаГСМСрезПоследних
                   ПО (уатНормыРасходаГСМСрезПоследних.МодельТС = уатПервоначальныеСведенияТС.Модель)
           ГДЕ
                   уатНормыРасходаГСМСрезПоследних.ГСМ <> &НоменПустаяСсылка
           СГРУППИРОВАТЬ ПО
                   уатПервоначальныеСведенияТС.ОсновноеСредство,
                   уатПервоначальныеСведенияТС.ГосударственныйНомер ) КАК влож
       ПО уатПутевойЛистРасходГСМ.ГСМ = влож.ГСМ_ВЕРХНяяСТРОКА
       //ПО уатПутевойЛистРасходГСМ.ТС = влож.ОсновноеСредство
ГДЕ
   уатПутевойЛистРасходГСМ.Ссылка.ПометкаУдаления = ЛОЖЬ
   И уатПутевойЛистРасходГСМ.Ссылка.Проведен = ИСТИНА
   И уатПутевойЛистРасходГСМ.Ссылка.Дата < &ДатаС
   //И уатПутевойЛистРасходГСМ.ТС = &ТС

СГРУППИРОВАТЬ ПО
   уатПутевойЛистРасходГСМ.ТС,
   влож.ГосударственныйНомер,
   уатПутевойЛистРасходГСМ.Ссылка ,
   уатПутевойЛистРасходГСМ.Ссылка.Дата ,
   уатПутевойЛистРасходГСМ.ОстатокПриВозвращении,
   уатПутевойЛистРасходГСМ.ГСМ,
   влож.ГСМ_ВЕРХНяяСТРОКА
УПОРЯДОЧИТЬ ПО
   влож.ГосударственныйНомер,
   РегистраторДата УБЫВ
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс