глюк sum

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
novichok
Постоянный гость
Сообщения: 79
Зарегистрирован: 10 апр 2013, 09:24

глюк sum

Сообщение novichok »

Подскажите, пожалуста, в таком запросе по кредитам

Код: Выделить всё

SQL select katorg.name,veksl.nodoc nom_kred_dog,veksl.datvip dat_kred_dog,veksl.DATOPL,veksl.prgod,
case when veksl.sumv=0 then veksl.sum else veksl.sumv end,
max(day(datetime(grafkred.ddat,curtime))),sum(aval.sumaval),katklass.name,katklass.prizn,coalesce(klval.shortdoll,'руб.'),
case when veksl.npp=comp(0) then veksl.nrec else veksl.npp  end ier,
case when veksl.npp=comp(0) then 1 else 2  end gv
from veksl
inner join katorg on veksl.cplat=katorg.nrec
inner join katklass on veksl.cvidveks=katklass.nrec
left join klval on veksl.cval=klval.nrec
left join grafkred on veksl.nrec=grafkred.cveksl
left join aval on veksl.nrec=aval.cveksl
group by katorg.name,veksl.nodoc,veksl.datvip,veksl.DATOPL,veksl.prgod,veksl.sum,veksl.sumv,katklass.name,katklass.prizn,klval.shortdoll,veksl.npp,veksl.nrec
order by katklass.name,katklass.prizn,klval.shortdoll,ier,gv,veksl.datvip; 
для одного из кредитов поле sum(aval.sumaval) получается 8,18347651974035E+150, хотя должно быть 0.
Делаю запрос только для этого кредита:

Код: Выделить всё

SQL select katorg.name,veksl.nodoc nom_kred_dog,veksl.datvip dat_kred_dog,veksl.DATOPL,veksl.prgod,
case when veksl.sumv=0 then veksl.sum else veksl.sumv end,
max(day(datetime(grafkred.ddat,curtime))),sum(aval.sumaval),katklass.name,katklass.prizn,coalesce(klval.shortdoll,'руб.'),
case when veksl.npp=comp(0) then veksl.nrec else veksl.npp  end ier,
case when veksl.npp=comp(0) then 1 else 2  end gv
from veksl
inner join katorg on veksl.cplat=katorg.nrec
inner join katklass on veksl.cvidveks=katklass.nrec
left join klval on veksl.cval=klval.nrec
left join grafkred on veksl.nrec=grafkred.cveksl
left join aval on veksl.nrec=aval.cveksl

where veksl.nodoc='транш 2'

group by katorg.name,veksl.nodoc,veksl.datvip,veksl.DATOPL,veksl.prgod,veksl.sum,veksl.sumv,katklass.name,katklass.prizn,klval.shortdoll,veksl.npp,veksl.nrec
order by katklass.name,katklass.prizn,klval.shortdoll,ier,gv,veksl.datvip; 
получается 0.
Как такое может быть???
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: глюк sum

Сообщение edward_K »

я уже писал , что при отсутствии валидной записи результат не предсказуем(и как решать - ищите case). Просто sum не катит - нужна проверка. Либо делайте inner join.
Ответить