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


I Love YaBB 2!

Сообщений: 413
Зарегистрирован: 29. Июня 2006
Выборка по периодам
09. Ноября 2006 :: 13:10
Печать  
Нужно сделать выборку по месячно за год.  Как это сделать одним запросом?
Примерный текст запроса:

|SELECT 
|  $ДокР.Контрагент as [Контрагент $Справочник.Контрагенты],
|  SUM($ДокРст.Количество) as Количество                        
|FROM
|  $ДокументСтроки.Реализация as ДокРст (NOLOCK),
|  $Документ.Реализация as ДокР  (nolock), 
|  _1SJourn as Жур (nolock),
|WHERE
|  (Жур.IDDoc=ДокРст.IDDoc) AND
|  (ДокР.IDDoc=ДокРст.IDDoc) AND
|  (Жур.IDDocDef = $ВидДокумента.Реализация) AND
|  (Жур.Closed & 1 =1) AND
|  (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~) AND 
|GROUP BY
| $ДокР.Контрагент
  
Наверх
 
IP записан
 
dip
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 37
Зарегистрирован: 19. Мая 2006
Re: Выборка по периодам
Ответ #1 - 09. Ноября 2006 :: 13:20
Печать  
|SELECT   
| datepart(month,cast(left(Жур.Date_Time_IdDoc,8) as datetime) as месяц,
|  $ДокР.Контрагент as [Контрагент $Справочник.Контрагенты],
|  SUM($ДокРст.Количество) as Количество                        
|FROM
|  $ДокументСтроки.Реализация as ДокРст (NOLOCK)
| inner join  $Документ.Реализация as ДокР  (nolock) on ДокР.IDDoc=ДокРст.IDDoc
| inner join  _1SJourn as Жур (nolock) on Жур.IDDoc=ДокРст.IDDoc
|WHERE
|  (Жур.Closed & 1 =1) AND
|  (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~)   
|GROUP BY 
| datepart(month,cast(left(Жур.Date_Time_IdDoc,8) as datetime),$ДокР.Контрагент 
 
  
Наверх
 
IP записан
 
dip
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 37
Зарегистрирован: 19. Мая 2006
Re: Выборка по периодам
Ответ #2 - 09. Ноября 2006 :: 13:22
Печать  
Скобку одну забыл
datepart(month,cast(left(Жур.Date_Time_IdDoc,8) as datetime)) as месяц,
  
Наверх
 
IP записан
 
dip
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 37
Зарегистрирован: 19. Мая 2006
Re: Выборка по периодам
Ответ #3 - 09. Ноября 2006 :: 13:25
Печать  
ну и в group by тоже скобка нужна Улыбка
  
Наверх
 
IP записан
 
RuporAbsurda
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 413
Зарегистрирован: 29. Июня 2006
Re: Выборка по периодам
Ответ #4 - 09. Ноября 2006 :: 13:26
Печать  
Спасибо  Смех
  
Наверх
 
IP записан
 
RuporAbsurda
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 413
Зарегистрирован: 29. Июня 2006
Re: Выборка по периодам
Ответ #5 - 09. Ноября 2006 :: 14:37
Печать  
Однако as месяц воспринимать не хочет.
Incorrect syntax near the keyword 'as'
ТекстЗапроса3 = "         
|SELECT 
|  $ДокР.Контрагент as [Контрагент $Справочник.Контрагенты],
|  SUM($ДокРст.Количество) as Количество,            
|FROM
|  $ДокументСтроки.Реализация as ДокРст (NOLOCK),
|  $Документ.Реализация as ДокР  (nolock), 
|  _1SJourn as Жур (nolock)
|WHERE
|  (Жур.IDDoc=ДокРст.IDDoc) AND
|  (ДокР.IDDoc=ДокРст.IDDoc) AND
|  (Жур.IDDocDef = $ВидДокумента.Реализация) AND
|  (Жур.Closed & 1 =1) AND
|  (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~) AND 
|GROUP BY
| (datepart(month,cast(left(Жур.Date_Time_IdDoc,8) as datetime)) as месяц),
| $ДокР.Контрагент
  
Наверх
 
IP записан
 
dip
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 37
Зарегистрирован: 19. Мая 2006
Re: Выборка по периодам
Ответ #6 - 09. Ноября 2006 :: 14:45
Печать  
Ты внимательно запрос посмотри, который я нарисовал. Где там as месяц d group by
К тому же если поле указано в group by  значит оно должно быть и после select
  
Наверх
 
IP записан
 
dip
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 37
Зарегистрирован: 19. Мая 2006
Re: Выборка по периодам
Ответ #7 - 09. Ноября 2006 :: 14:46
Печать  
И Вообще что там за AND перед group by
  
Наверх
 
IP записан
 
dip
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 37
Зарегистрирован: 19. Мая 2006
Re: Выборка по периодам
Ответ #8 - 09. Ноября 2006 :: 14:49
Печать  
|SELECT   
| datepart(month,cast(left(Жур.Date_Time_IdDoc,8) as datetime)) as месяц,
|  $ДокР.Контрагент as [Контрагент $Справочник.Контрагенты], 
|  SUM($ДокРст.Количество) as Количество                         
|FROM 
|  $ДокументСтроки.Реализация as ДокРст (NOLOCK)
| inner join  $Документ.Реализация as ДокР  (nolock) on ДокР.IDDoc=ДокРст.IDDoc
| inner join  _1SJourn as Жур (nolock) on Жур.IDDoc=ДокРст.IDDoc
|WHERE 
|  (Жур.Closed & 1 =1) AND 
|  (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~)   
|GROUP BY   
| datepart(month,cast(left(Жур.Date_Time_IdDoc,8) as datetime)),$ДокР.Контрагент   
   
Вот это скопирую и должно быть все нормально
  
Наверх
 
IP записан
 
RuporAbsurda
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 413
Зарегистрирован: 29. Июня 2006
Re: Выборка по периодам
Ответ #9 - 10. Ноября 2006 :: 06:29
Печать  
Да точно сразу не сообразил!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать