Классификатор видов оплат имеет привязку ко внешней классификации.
Исходя их привязанного условия выбрать 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, Модераторы
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 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
....
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: "Where " по условию
1. можно написать в (( )) дополнительное условие в and ( ..) и с одним = - так читабельней - раньше были проблемы с описанием этого внутри (()), но теперь пашет.
2. У вас поля с годом неправильно названы, а мож еще где.
3. В вашем случае лучше отдельно отобрать там где + и там где нет или - - запросы будут работать раз в 5 быстрее. Если это ваш код, то можно баундсы подымать в зависимости от вида оплат.
2. У вас поля с годом неправильно названы, а мож еще где.
3. В вашем случае лучше отдельно отобрать там где + и там где нет или - - запросы будут работать раз в 5 быстрее. Если это ваш код, то можно баундсы подымать в зависимости от вида оплат.