Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) помогите новичку (число прочтений - 2995 )
voralena
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 11. Февраля 2009
помогите новичку
11. Февраля 2009 :: 13:34
Печать  
При выполнении запроса выдает ошибку:
State 42000, native 156, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'case'

что я здесь не так написала? Все переменные типа перечисление
     |case WHEN RA8431.SP8426=:Поступление THEN 1
     |       WHEN RA8431.SP8426=:ВозвратПоставщику THEN 2
     |       WHEN RA8431.SP8426=:Продажа THEN 3
     |       WHEN RA8431.SP8426=:Переоценка THEN 4
     |       WHEN RA8431.SP8426=:ВозвратПокупателя THEN 5
     |       WHEN RA8431.SP8426=:Списание THEN 6
     |       WHEN RA8431.SP8426=:Оприходование THEN 7
     |       WHEN RA8431.SP8426=:ПрочийРасход THEN 8
     |       WHEN RA8431.SP8426=:Благотворительность THEN 0
     |       ELSE 0 END AS ХозОперация,
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: помогите новичку
Ответ #1 - 11. Февраля 2009 :: 13:49
Печать  
case  RA8431.SP8426
     |       WHEN :Поступление THEN 1
     |       WHEN :ВозвратПоставщику THEN 2
     |       WHEN :Продажа THEN 3
     |       WHEN :Переоценка THEN 4
     |       WHEN :ВозвратПокупателя THEN 5
     |       WHEN :Списание THEN 6
     |       WHEN :Оприходование THEN 7
     |       WHEN :ПрочийРасход THEN 8
     |       WHEN :Благотворительность THEN 0
     |       ELSE 0 END AS ХозОперация,
  
Наверх
 
IP записан
 
voralena
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 11. Февраля 2009
Re: помогите новичку
Ответ #2 - 11. Февраля 2009 :: 14:11
Печать  
не помогло!  Плачущий
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: помогите новичку
Ответ #3 - 11. Февраля 2009 :: 14:16
Печать  
А весь запрос можно увидеть?
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: помогите новичку
Ответ #4 - 11. Февраля 2009 :: 14:17
Печать  
Приведи весь текст запроса.
  
Наверх
IP записан
 
voralena
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 11. Февраля 2009
Re: помогите новичку
Ответ #5 - 11. Февраля 2009 :: 14:19
Печать  
     "select
     |Товар,
     |Партия.Принципал,
     |КоличествоПриход,
     |КоличествоРасход,
     |СебестоимостьПринципалПриход,
     |СебестоимостьПринципалРасход,
     |СебестоимостьКомиссионерПриход,
     |СебестоимостьКомиссионерРасход,
     |ХозОперация,
     |ЦенаРозница,
     |ДокДвижения
     |  FROM(
     |select
     |RA8431.SP8422 AS Товар,
     |RA8431.SP8421 AS Партия
     |case WHEN RA8431.DEBKRED=0 THEN SUM(RA8431.SP8423) ELSE 0 END AS КоличествоПриход,
     |case WHEN RA8431.DEBKRED=1 THEN SUM(RA8431.SP8423) ELSE 0 END AS КоличествоРасход,
     |case WHEN RA8431.DEBKRED=0 THEN SUM(RA8431.SP8424) ELSE 0 END AS СебестоимостьПринципалПриход,
     |case WHEN RA8431.DEBKRED=1 THEN SUM(RA8431.SP8424) ELSE 0 END AS СебестоимостьПринципалРасход,
     |case WHEN RA8431.DEBKRED=0 THEN SUM(RA8431.SP8425) ELSE 0 END AS СебестоимостьКомиссионерПриход,
     |case WHEN RA8431.DEBKRED=1 THEN SUM(RA8431.SP8425) ELSE 0 END AS СебестоимостьКомиссионерРасход,
     |case
     |       WHEN RA8431.SP8426=:Поступление THEN 1
     |       WHEN RA8431.SP8426=:ВозвратПоставщику THEN 2
     |       WHEN RA8431.SP8426=:Продажа THEN 3
     |       WHEN RA8431.SP8426=:Переоценка THEN 4
     |       WHEN RA8431.SP8426=:ВозвратПокупателя THEN 5
     |       WHEN RA8431.SP8426=:Списание THEN 6
     |       WHEN RA8431.SP8426=:Оприходование THEN 7
     |       WHEN RA8431.SP8426=:ПрочийРасход THEN 8
     |       WHEN RA8431.SP8426=:Благотворительность THEN 0
     |       ELSE 0 END AS ХозОперация,
     |RA8431.SP8430 AS ЦенаРозница,
     |RA8431.SP8427 AS ДокДвижения
     |  FROM RA8431 INNER JOIN _1SJOURN ON RA8431.IDDOC = _1SJOURN.IDDOC
     |  WHERE (_1SJOURN.DATE_TIME_IDDOC >= '"+ДатаНачала+"') AND (_1SJOURN.DATE_TIME_IDDOC < '"+ДатаКонца+"') AND
     |  (_1SJOURN.CLOSED & 1 = 1))
     |GROUP BY Принципал, ХозОперация,  ДокДвижения
     |ORDER BY Принципал, ХозОперация,  ДокДвижения";
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: помогите новичку
Ответ #6 - 11. Февраля 2009 :: 14:20
Печать  
у меня работает код

Код
Выбрать все
select case ltrim(code)
   when '1' then 100
   when '4' then 400
   when '5' then 500
   else - 1
   end  as xxx
from sc13
 



показывай свой запрос полностью
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: помогите новичку
Ответ #7 - 11. Февраля 2009 :: 14:22
Печать  
|RA8431.SP8421 AS Партия,
|case
  

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


1C++ rocks!

Сообщений: 6
Зарегистрирован: 11. Февраля 2009
Re: помогите новичку
Ответ #8 - 11. Февраля 2009 :: 14:24
Печать  
просмотрела Смущённый
ну, уже завтра буду проверять
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: помогите новичку
Ответ #9 - 11. Февраля 2009 :: 14:25
Печать  
1.перед первым case нужна запятая
2. первый case должен заканчиваться end
  
Наверх
 
IP записан
 
voralena
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 11. Февраля 2009
Re: помогите новичку
Ответ #10 - 11. Февраля 2009 :: 14:31
Печать  
теперь
Incorrect syntax near the keyword 'GROUP'.
эх...
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: помогите новичку
Ответ #11 - 11. Февраля 2009 :: 14:39
Печать  
по моему группировать можно только по ВСЕМ столбцам результируещей таблицы
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: помогите новичку
Ответ #12 - 11. Февраля 2009 :: 14:50
Печать  
voralena писал(а) 11. Февраля 2009 :: 14:31:
теперь
Incorrect syntax near the keyword 'GROUP'.
эх...

Поле Принципал в подзапросе не определено. Это -

|Партия.Принципал,

- ещё одна ошибка..
  

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


1C++ rocks!

Сообщений: 6
Зарегистрирован: 11. Февраля 2009
Re: помогите новичку
Ответ #13 - 12. Февраля 2009 :: 09:17
Печать  
а можно где-то описание почитать? а то как же мне реквизит реквизита вытащить?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: помогите новичку
Ответ #14 - 12. Февраля 2009 :: 11:24
Печать  
В любом руководстве по SQL - ключевое слово JOIN. Присоединяешь справочник (или что оно такое) Партии и получаешь оттуда реквизит Принципал.

И о секции GROUP BY почитай - там тоже есть ошибка.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать