请问这个SQL语句错在那里?

来源:百度知道 编辑:UC知道 时间:2024/06/09 13:18:05
select nsrsbh,decode((sum(zckpfs)-sum(tpfs)),(sum(zckpfs)-sum(tpfs))>0,sum(zckpfs)-sum(tpfs),(sum(zckpfs)-sum(tpfs))<0,sum(tpfs)-sum(zckpfs),1)
from js_skskj_fphz
where kpqssj>=to_date('20090101','yyyy-mm-dd')
and kpjzsj<=to_date('20090601','yyyy-mm-dd')
and nsrsbh='110106774744062'
group by nsrsbh

执行的时候总是报ORA-00907:missing right parenthesis

select nsrsbh,case when (sum(zckpfs)-sum(tpfs))>0 then (sum(zckpfs)-sum(tpfs)) when (sum(zckpfs)-sum(tpfs))<0 then (sum(tpfs)-sum(zckpfs)) else 1 end
from js_skskj_fphz
where kpqssj>=to_date('20090101','yyyy-mm-dd')
and kpjzsj<=to_date('20090601','yyyy-mm-dd')
and nsrsbh='110106774744062'
group by nsrsbh
你试试这个吧,我记不清楚oracle的语法中,decode是否支持数学函数了,我记得似乎不可以,但是我知道case when是支持的,所以要不你先试试这个吧

select nsrsbh,decode((sum(zckpfs)-sum(tpfs)),(sum(zckpfs)-sum(tpfs))>0,sum(zckpfs)-sum(tpfs),(sum(zckpfs)-sum(tpfs))<0,sum(tpfs)-sum(zckpfs),1)
from js_skskj_fphz
where kpqssj>=to_date('20090101','yyyymmdd')
and kpjzsj<=to_date('20090601','yyyymmdd')
and nsrsbh='110106774744062'
group by nsrsbh

这么复杂的语句,的确不好分析,我建议最好简化语句,编程不是高高难度的,关键是使用