各位帮忙看看这条sql语句怎么写?急!
ls_sql := 'insert into jfr_dianftj_temp
select b.jiryf,b.dianjdm,b.beiz
-- ,count(distinct b.huh||b.dianjdm)
-- ,sum(b.dianl)
,0
,0
,0
,nvl(sum(b.muldj),0)
,nvl(sum(b.sanxjj),0)
,nvl(sum(b.chengsfj),0)
,sum(decode(sign(b.litdf),1,b.litdf,0))
,sum(decode(sign(b.litdf),-1,b.litdf,0))
,nvl(sum(b.jifrl),0)
,nvl(sum(b.rongldf),0)
,nvl(sum(b.jifxl),0)
,nvl(sum(b.xuldf),0)
,''2''
from sf_shoufjl a,jf_tuibdf b,yda_gongddw g
where g.cengcbm like :0
and a.gongddw = g.danwbh
and (g.shujtjfs = ''1'' or g.shujtjfs = ''2'')
and a.rukfs = ''2'' and a.shoufsj >= :1 and a.shoufsj < :2
and b.huh = a.huh
and a.yingsje<>0
and b.jiryf = a.yuef
-- and b.ruksj = a.jiesrq --完全匹配时间的话符合条件的记录很少
-- and to_char(b.ruksj,''yyyymmdd'') = to_char(a.jiesrq,''yyyymmdd'')
and b.chulbz = ''已入库''
group by b.jiryf,b.dianjdm,b.beiz';
execute immediate ls_sql using ls_ccbm,ld_ksrq,ld_jzrq; --当月调价退补
现在的问题是b表大部分数据都有两条记录和a表匹配,目前的问题就是上面的sql统计出来的数据基本上是b表原始数据的两倍。请问应该怎么修改才能得到正确的结果?