Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Количество значений в запросе (число прочтений - 2301 )
RuporAbsurda
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 413
Зарегистрирован: 29. Июня 2006
Количество значений в запросе
29. Июня 2006 :: 06:33
Печать  
Нужно определить за год со сколькими филиалами(сетевыми точками) мы работали каждый месяц. Например январь - 5 филиалов, февраль - 6 филиалов. Для этого по документам реализациям выбираем филиалы. Как правильно составить запрос. Нижеприведенный запрос выбирает сколько раз отгружалась продукция в тот или иной филиал, а нужно подсчитать только количество филиалов
ТекстЗапроса = "
        |SELECT  COUNT (*),
           |$ДокР.СетеваяТочка  as [СетеваяТочка $Справочник.СетевыеТочки]
        |FROM _1SJourn as Жур (nolock)
        |LEFT JOIN
        |   $Документ.Реализация as ДокР  (nolock)
        |ON (Жур.IDDoc = ДокР.IDDoc) AND (Жур.IDDocDef = $ВидДокумента.Реализация)
        |WHERE
        | (Жур.Date_Time_IDDoc BETWEEN :ВыбДата AND :ВыбДатаКон~)
        | AND (Жур.Closed & 1 =1)
        | AND (Жур.IDDocDef = $ВидДокумента.Реализация)
        | AND ($ДокР.Контрагент=:Контрагент)
        |GROUP BY
        |$ДокР.СетеваяТочка
        |";
  
Наверх
 
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Количество значений в запросе
Ответ #1 - 29. Июня 2006 :: 07:12
Печать  
не долго думал, потому это может быть не очень оптимально, но тут можно оформить твою группировку подзапросом, а снаружи - подсчитать:
Код
Выбрать все
SELECT
COUNT(*) as КоличествоФилиалов
FROM (SELECT ...твойЗапрос... GROUP BY Филиал) 

  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Количество значений в запросе
Ответ #2 - 29. Июня 2006 :: 07:45
Печать  
количество сетевых точек по месяцам:

Код
Выбрать все
ТекстЗапроса = "
|SELECT
|  cast(left(Жур.Date_Time_IDDoc,6)+'01' as datetime) Месяц,
|  COUNT ($ДокР.СетеваяТочка) КоличествоТочек
|FROM _1SJourn as Жур (nolock)
|LEFT JOIN
|   $Документ.Реализация as ДокР  (nolock)
|ON (Жур.IDDoc = ДокР.IDDoc) AND (Жур.IDDocDef = $ВидДокумента.Реализация)
|WHERE
| (Жур.Date_Time_IDDoc BETWEEN :ВыбДата AND :ВыбДатаКон~)
| AND (Жур.Closed & 1 =1)
| AND (Жур.IDDocDef = $ВидДокумента.Реализация)
| AND ($ДокР.Контрагент=:Контрагент)
|GROUP BY left (Жур.Date_Time_IDDoc,6)
|order by Месяц
|";  

  

1&&2&&3
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать