Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Где ошибка. Помогите плиз (число прочтений - 1991 )
quest
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 21. Августа 2006
Где ошибка. Помогите плиз
28. Ноября 2006 :: 12:12
Печать  
     ТекстЗапроса = "
           |SELECT рег.Товар [Товар $Справочник.Номенклатура]
           |      , Sum(рег.ОстатокТовараНачальныйОстаток) КНачОст
           |      , Sum(case ЧПериод when 0 then рег1.ОстатокТовараПриход else 0 end) КПриход_0
           |      , Sum(case ЧПериод when 1 then рег1.ОстатокТовараПриход else 0 end) КПриход_1
           |      , Sum(case ЧПериод when 2 then рег1.ОстатокТовараПриход else 0 end) КПриход_2
           |      , Sum(рег.ОстатокТовараРасход) КРасход
           |      , Sum(рег.ОстатокТовараКонечныйОстаток) ККонОст
           |FROM $РегистрОстаткиОбороты.ПартииТоваров(:ВыбДатаНачала,:ВыбДатаКонца~,,,,(Фирма = :выбФирма),Товар,ОстатокТовара) AS рег
           |inner join (
           |SELECT рег2.Товар [Товар $Справочник.Номенклатура]
           |      , Sum(рег2.ОстатокТовараПриход) КПриход
           |      , Sum(рег2.ОстатокТовараРасход) КРасход
           |      , datediff(d,Рег2.Период,:minDate)/3) ЧПериод
           |FROM $РегистрОбороты.ПартииТоваров(:ВыбДатаНачала,:ВыбДатаКонца~,День,,(Фирма = :выбФирма),Товар,ОстатокТовара) AS рег2
           |      GROUP BY  рег2.Товар, datediff(d,Рег2.Период,:minDate)/3)
           |) as рег1 on рег1.товар = рег.товар
           |GROUP BY  рег.Товар
           |";



ругается
тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
{...РАЗ.ERT(97)}: State 42000, native 156, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'FROM'.

Помогите, уже полдня бьюсь.
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Где ошибка. Помогите плиз
Ответ #1 - 28. Ноября 2006 :: 12:20
Печать  
типизацию в подзапросе убери

бу-га-га - я быстрее  Смех
  
Наверх
ICQ  
IP записан
 
quest
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 21. Августа 2006
Re: Где ошибка. Помогите плиз
Ответ #2 - 28. Ноября 2006 :: 13:33
Печать  
не. Не помогло.

Что я делаю не так?

SELECT рег.Товар [Товар $Справочник.Номенклатура]
     , Sum(рег.ОстатокТовараНачальныйОстаток) КНачОст
     , Sum(case ЧПериод when 0 then рег1.ОстатокТовараПриход else 0 end) КПриход_0
     , Sum(case ЧПериод when 1 then рег1.ОстатокТовараПриход else 0 end) КПриход_1
     , Sum(case ЧПериод when 2 then рег1.ОстатокТовараПриход else 0 end) КПриход_2
     , Sum(рег.ОстатокТовараРасход) КРасход
     , Sum(рег.ОстатокТовараКонечныйОстаток) ККонОст
FROM (
select
rb2428_vt.Товар,
sum(rb2428_vt.ОстатокТовараОстаток) as ОстатокТовараНачальныйОстаток,
sum(rb2428_vt.ОстатокТовараПриход) as ОстатокТовараПриход,
sum(rb2428_vt.ОстатокТовараРасход) as ОстатокТовараРасход,
sum(rb2428_vt.ОстатокТовараОстаток) + sum(rb2428_vt.ОстатокТовараПриход) - sum(rb2428_vt.ОстатокТовараРасход) as ОстатокТовараКонечныйОстаток
from (
select
ra2428_vt.sp2411 as Товар,
case when ra2428_vt.debkred = 0 then ra2428_vt.sp2417 else 0 end as ОстатокТовараПриход,
case when ra2428_vt.debkred = 1 then ra2428_vt.sp2417 else 0 end as ОстатокТовараРасход,
0 as ОстатокТовараОстаток
from ra2428 as ra2428_vt (nolock)
inner join _1sjourn as j2428_vt (nolock) on j2428_vt.iddoc = ra2428_vt.iddoc
where j2428_vt.date_time_iddoc > '20061101' and j2428_vt.date_time_iddoc < '20061127Z'
and j2428_vt.rf2428 = 0x1
and ((ra2428_vt.sp2410 = '     0   '))
union all
select
rg2428_vt.sp2411 as Товар,
0,
0,
rg2428_vt.sp2417
from rg2428 as rg2428_vt (nolock)
where rg2428_vt.period={d '2006-10-01'}
and ((rg2428_vt.sp2410 = '     0   '))
) as rb2428_vt
group by
rb2428_vt.Товар
having
sum(rb2428_vt.ОстатокТовараОстаток) <> 0 or
sum(rb2428_vt.ОстатокТовараПриход) <> 0 or
sum(rb2428_vt.ОстатокТовараРасход) <> 0 or
sum(rb2428_vt.ОстатокТовараОстаток) + sum(rb2428_vt.ОстатокТовараПриход) - sum(rb2428_vt.ОстатокТовараРасход) <> 0
) as рег
inner join (
SELECT Товар
     , Sum(ОстатокТовараПриход) КПриход
     , Sum(ОстатокТовараРасход) КРасход
     , datediff(d,Период,'20061101')/3) ЧПериод

FROM ( ####
select
ra2428_vt.sp2411 as Товар,
cast(left(j2428_vt.date_time_iddoc, 8) as datetime) as Период,
sum(case when ra2428_vt.debkred = 0 then ra2428_vt.sp2417 else 0 end) as ОстатокТовараПриход,
sum(case when ra2428_vt.debkred = 1 then ra2428_vt.sp2417 else 0 end) as ОстатокТовараРасход
from ra2428 as ra2428_vt (nolock)
inner join _1sjourn as j2428_vt (nolock) on j2428_vt.iddoc = ra2428_vt.iddoc
where j2428_vt.date_time_iddoc > '20061101' and j2428_vt.date_time_iddoc < '20061127Z'
and j2428_vt.rf2428 = 0x1
and ((ra2428_vt.sp2410 = '     0   '))
group by
ra2428_vt.sp2411,
cast(left(j2428_vt.date_time_iddoc, 8) as datetime)
having
sum(case when ra2428_vt.debkred = 0 then ra2428_vt.sp2417 else 0 end) <> 0 or
sum(case when ra2428_vt.debkred = 1 then ra2428_vt.sp2417 else 0 end) <> 0
) as Turnovers2428
     GROUP BY  Товар, datediff(d,Период,'20061101')/3)
) as рег1 on рег1.товар = рег.товар
GROUP BY  рег.Товар

это развернутый запрос.

ругается в QA на то что помечено ####
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Где ошибка. Помогите плиз
Ответ #3 - 28. Ноября 2006 :: 14:10
Печать  
Цитата:
   , datediff(d,Период,'20061101')/3) ЧПериод
Не закрытая скобка. Дважды.  Смех
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
quest
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 21. Августа 2006
Re: Где ошибка. Помогите плиз
Ответ #4 - 28. Ноября 2006 :: 14:39
Печать  
Спасибо. Кривые все же руки у меня  Смех
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать