Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Если то тогда в Прямом запросе (число прочтений - 3593 )
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Если то тогда в Прямом запросе
05. Марта 2007 :: 10:00
Печать  
Пните в нужном направлении если не трудно

Код
Выбрать все
SELECT
  $Движения.Фирма as Фирма,
  $Движения.Товар as Товар,
  $Движения.Склад as Склад,
  0 as ОстатокТовараНачальныйОстаток,
  (1-Движения.DEBKRED)*$Движения.ОстатокТовара as ОстатокТовараПриход,
  Движения.DEBKRED*$Движения.ОстатокТовара as ОстатокТовараРасход,
  0 as ОстатокТовараКонечныйОстаток
 FROM
    $Register.ОстаткиТоваров as Движения
INNER
   JOIN 1SJourn as J ON Движения.IDDOC=J.IDDOC
WHERE
   (J.DATE >= :ДатаНачала~~) AND (J.DATE <= :ДатаКонца~~) AND
   $Движения.Фирма = :ВыбраннаяФирма
!!!!!!!!!!!
and
Если ДатаПрихода меньше Заданного
!!!!!!!!!!!!!!!

 



То есть я хочу вставить в выборку следующую конструкцию

Если ДокументДвижения осуществляет Приход проверить его на соответствие условия по Дате, а если Расход - тогда пусть отбор не действует

Как лучше сделать то... Никто не сталкивался


  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Если то тогда в Прямом запросе
Ответ #1 - 05. Марта 2007 :: 10:48
Печать  
Код
Выбрать все
and ((Движения.DEBKRED = 1) or (J.DATE < :Заданного)) 

  

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


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Если то тогда в Прямом запросе
Ответ #2 - 05. Марта 2007 :: 10:57
Печать  
Ух-ты действительно, и работает, класссно...
Спасибо ОГРОМНОЕ.

ЗЫ теперь буду разбираться почему это работает  Смущённый
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Если то тогда в Прямом запросе
Ответ #3 - 05. Марта 2007 :: 14:00
Печать  
в условии можно еще и case юзать
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Если то тогда в Прямом запросе
Ответ #4 - 05. Марта 2007 :: 19:49
Печать  
Phoenix писал(а) 05. Марта 2007 :: 14:00:
в условии можно еще и case юзать

Расширенное описание T-SQL
Более углубленное изучение T-SQL продолжается в этой лекции. Рассматриваются новые конструкции: IF...ELSE, WHILE и CASE. Новые операторы, ранее не задействованные в примерах. Примеры и дополнительная информация, в сочетании со справочной системой SQL Server (Books Online) эффективно помогут вам разобраться во всех тонкостях нового материала.
  
Наверх
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Если то тогда в Прямом запросе
Ответ #5 - 06. Марта 2007 :: 05:59
Печать  
Самое обидное, я уже раз 5 пытался применить конструкции CASE THEN END в запросах через OLEDB, но почему то получается ошибка то синтаксическая, то еще какая - а так как время уходит - подобное оставляем на потом (на выходные, если дети дадут)...

Так что trdm в принципе прав - RTFM необходимо произвести..
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Если то тогда в Прямом запросе
Ответ #6 - 06. Марта 2007 :: 06:56
Печать  
lustin писал(а) 06. Марта 2007 :: 05:59:
пытался применить конструкции CASE THEN END в запросах через OLEDB, но почему то получается ошибка то синтаксическая, то еще какая

Так нужно учитывать особенности диалекта SQL.
  
Наверх
ICQ  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Если то тогда в Прямом запросе
Ответ #7 - 06. Марта 2007 :: 08:36
Печать  
Еще раз сегодня применил подобные конструкции

Выборка всех движений по регистру ОстаткиТоваров

Попробуем выделить в одну колонку только даты Движения вида "приход"

Код
Выбрать все
|SELECT
|	$Движения.Фирма as Фирма,
|	$Движения.Товар as Товар,
|	$Движения.Склад as Склад,
|       CASE
|	WHEN Движения.DEBKRED=1 THEN ''
|	ELSE J.DATE
|       END as ДатыПрихода,
|	J.Date as DataDoc,
|	0 as ОстатокТовараНачальныйОстаток,
|	(1-Движения.DEBKRED)*$Движения.ОстатокТовара as ОстатокТовараПриход,
|	Движения.DEBKRED*$Движения.ОстатокТовара as ОстатокТовараРасход,
|	0 as ОстатокТовараКонечныйОстаток
|	FROM
|		$Register.ОстаткиТоваров as Движения
|	INNER
|		JOIN 1SJourn as J ON Движения.IDDOC=J.IDDOC
|	WHERE
|		(J.DATE >= :ДатаНачала~~) AND (J.DATE <= :ДатаКонца~~) AND
|		($Движения.Фирма = :ВыбраннаяФирма)
 


Естественно выдало ошибку к которой я привык
FAILED! ICommandText::Execute(): Command contains unrecognized phrase/keyword.

Правим по другому как положено по Описанию T-SQL на том же Интуите

Код
Выбрать все
...
|ДатыПриходов =
|    CASE
|       WHEN Движения.DEBKRED=1 THEN ''
|       ELSE J.DATE
|END,
...
 



То же самое

Код
Выбрать все
...
|ДатыПриходов =
|    CASE Движения.DEBKRED
|       WHEN 1 THEN ''
|       ELSE J.DATE
|END,
...
 



ТО ЕСТЬ видимо существует какой то момент который я не знаю в данном случае
Вполне допускаю что где то опять не поставил скобки Смущённый



  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Если то тогда в Прямом запросе
Ответ #8 - 06. Марта 2007 :: 12:19
Печать  
Phoenix писал(а) 05. Марта 2007 :: 14:00:
в условии можно еще и case юзать


Вот также и я привык уже считать что CASE он везде - ЭХ кто бы мне напомнил что есть ICASE() Смущённый
Код
Выбрать все
ICASE(РегПрихРасх.DEBKRED=1,'попали','не попали') as ДатаПриход 



Недостаток опыта
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
smile
Junior Member
**
Отсутствует


бррр... ужас...

Сообщений: 50
Зарегистрирован: 23. Мая 2006
Re: Если то тогда в Прямом запросе
Ответ #9 - 07. Марта 2007 :: 05:07
Печать  
Конструкция должна быть такой:



Код
Выбрать все
case when
Движения.DEBKRED=1
then
'попали'
else
'не попали'
end фПриходРасход
 



так должно работать... у меня по крайней мере работает...

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