Классификатор видов оплат имеет привязку ко внешней классификации.
Исходя их привязанного условия выбрать sumvidop месяц "в котором" либо "за который "
Примерно так:
select
  klvidopl.vidoplp,
  exclassseg.name,
  sumvidop.summa
from
  klvidopl,exclassseg,exclassval,exclassname,
  sumvidop,
  lschet
where
  ((
    15010 == exclassname.wtable
  and 'В форме 4 учитывать по месяцу ЗА который начисленно' ==exclassname.name
  and EXCLASSNAME.CLASSCODE==EXCLASSVAL.CLASSCODE
  and 15010==EXCLASSVAL.WTABLE
  and KLVIDOPL.nrec==EXCLASSVAL.CREC
  and Exclassval.CClassSeg==EXCLASSSEG.nrec
  and lschet.nrec == sumvidop.clsch
!      if(exclassseg.name='+',
!         2013==sumvidop.yeark and 5==sumvidop.mes,
!         2013 == sumvidop.yearn and 5 == sumvidop.mesn)
  and 2013 == if(exclassseg.name='+',sumvidop.yerk,sumvidop.yarn)
  and 5 == if(exclassseg.name='+',sumvidop.mes,sumvidop.mesn)
  and klvidopl.vidopl == sumvidop.vidopl
  ))
;
Подскажите криворукому как связать по условию?
			
			
									
						
										
						"Where " по условию
Модераторы: m0p3e, edward_K, Модераторы
- 
				Den
 - Местный житель
 - Сообщения: 1847
 - Зарегистрирован: 29 мар 2005, 17:49
 - Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
 - Контактная информация:
 
Re: "Where " по условию
справа от == никаких вычисляемых выражений не может быть.
так что самое простое сделать просто фильтром эти условия на sumvidop
...
and if(exclassseg.name='+',sumvidop.yerk,sumvidop.yarn)=2013
and if(exclassseg.name='+',sumvidop.mes,sumvidop.mesn)=5
....
			
			
									
						
										
						так что самое простое сделать просто фильтром эти условия на sumvidop
...
and if(exclassseg.name='+',sumvidop.yerk,sumvidop.yarn)=2013
and if(exclassseg.name='+',sumvidop.mes,sumvidop.mesn)=5
....
- 
				edward_K
 - Заслуженный деятель интернет-сообщества
 - Сообщения: 5189
 - Зарегистрирован: 29 мар 2005, 17:49
 - Откуда: SPB galaxy spb
 
Re: "Where " по условию
1. можно написать в (( )) дополнительное условие в and ( ..) и с одним  = - так читабельней - раньше были проблемы с описанием этого внутри (()), но теперь пашет.
2. У вас поля с годом неправильно названы, а мож еще где.
3. В вашем случае лучше отдельно отобрать там где + и там где нет или - - запросы будут работать раз в 5 быстрее. Если это ваш код, то можно баундсы подымать в зависимости от вида оплат.
			
			
									
						
										
						2. У вас поля с годом неправильно названы, а мож еще где.
3. В вашем случае лучше отдельно отобрать там где + и там где нет или - - запросы будут работать раз в 5 быстрее. Если это ваш код, то можно баундсы подымать в зависимости от вида оплат.