Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Как получить в прямом запросе максимальную сумму расходной накладной? (число прочтений - 2108 )
GEORG
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 43
Зарегистрирован: 15. Мая 2008
Как получить в прямом запросе максимальную сумму расходной накладной?
04. Сентября 2008 :: 08:31
Печать  
Если
ТекстЗапроса =" 
     | SELECT
     |   Док.IDDOC AS [Док $Документ.РасходнаяНакладная]
     |   ,MAX(Док.SP4905) [Всего $Число]
     |   ,Док."+Контр+" [Клиент $Справочник.Контрагенты]
     |FROM
     |  _1sjourn  j (nolock),
     |  $Документ.РасходнаяНакладная Док (nolock)   
     |WHERE
     |  j.iddoc = Док.iddoc 
     |  and (Док."+Контр+" NOT  IN ("+МетаСписКонтр+"))
     | and (J.$ОбщийРеквизит.Фирма IN ("+МетаСписФирм+"))
     | AND (J.DATE_TIME_IDDOC BETWEEN :НачДата1 AND :КонДата1~) 
     |GROUP BY  Док.IDDOC,Док."+Контр+" ,Док.SP4905
     |ORDER BY  Док."+Контр+"
     |";
     Если Запрос.Открыть(ТекстЗапроса)=0 Тогда
           Сообщить(Запрос.ПолучитьОписаниеОшибки (),"");
     КонецЕсли; 
     ы");
     ТОстатков4=СоздатьОбъект("ТаблицаЗначений");
то все расходные выводятся по контрагенту.
  
Наверх
 
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: Как получить в прямом запросе максимальную сумму расходной накладной?
Ответ #1 - 04. Сентября 2008 :: 11:19
Печать  
Потому что группировка:

GEORG писал(а) 04. Сентября 2008 :: 08:31:
     |GROUP BY  Док.IDDOC,Док."+Контр+" ,Док.SP4905

Надо из условия группировки исключить поле Док.SP4905
  
Наверх
 
IP записан
 
GEORG
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 43
Зарегистрирован: 15. Мая 2008
Re: Как получить в прямом запросе максимальную сумму расходной накладной?
Ответ #2 - 04. Сентября 2008 :: 11:29
Печать  
не помогло
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Как получить в прямом запросе максимальную сумму расходной накладной?
Ответ #3 - 04. Сентября 2008 :: 11:34
Печать  
Если долго думать не хочешь - моно сделать неоптимально
select top 1 ...
...
order by Док.SP4905 desc

А так можно слепить соединение или вложенный запрос на иддок
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: Как получить в прямом запросе максимальную сумму расходной накладной?
Ответ #4 - 04. Сентября 2008 :: 11:39
Печать  
А какой результат запроса нужен? Получить документ с наибольшей суммой по клиенту? Нужна только сумма или документ тоже нужен?
  
Наверх
 
IP записан
 
GEORG
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 43
Зарегистрирован: 15. Мая 2008
Re: Как получить в прямом запросе максимальную сумму расходной накладной?
Ответ #5 - 04. Сентября 2008 :: 11:40
Печать  
и сумма и документ
  
Наверх
 
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: Как получить в прямом запросе максимальную сумму расходной накладной?
Ответ #6 - 04. Сентября 2008 :: 11:56
Печать  
Может так:

ТекстЗапроса =" 
     | SELECT
     |   Док.IDDOC AS [Док $Документ.РасходнаяНакладная]
     |   ,Док.SP4905 [Всего $Число]
     |   ,Док."+Контр+" [Клиент $Справочник.Контрагенты]
     |FROM _1sjourn  j (nolock)
     |  inner join $Документ.РасходнаяНакладная Док (nolock) on j.iddoc = Док.iddoc 
     |             AND (Док."+Контр+" NOT  IN ("+МетаСписКонтр+"))
     |                 AND (J.$ОбщийРеквизит.Фирма IN ("+МетаСписФирм+"))
     |                 AND (J.DATE_TIME_IDDOC BETWEEN :НачДата1 AND :КонДата1~)
     |  left join $Справочник.Контрагенты контр (nolock) on контр.id = Док."+Контр+"
     |WHERE Док.SP4905 = ( SELECT
     |                        max(SP4905)
     |                     FROM $Документ.РасходнаяНакладная (nolock)
     |                     WHERE "+Контр+" = Док."+Контр+" )
     |GROUP BY  Док.IDDOC, Док."+Контр+", Док.SP4905
     |ORDER BY  max(контр.descr)
     |";
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать