Страница 1 из 1

глюк sum

Добавлено: 13 авг 2013, 10:13
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.
Как такое может быть???

Re: глюк sum

Добавлено: 13 авг 2013, 11:00
edward_K
я уже писал , что при отсутствии валидной записи результат не предсказуем(и как решать - ищите case). Просто sum не катит - нужна проверка. Либо делайте inner join.