日期:2014-05-18 浏览次数:20495 次
--有张表#tb_yskm,这张表就是财政功能科目表 fzdm fzmc 201 mc1 20101 mc2 2010101 mc3 202 .............. #tb_zb,指标情况表,yskmdm就是FZDM,但是此表yskmdm都是明细项。 yskmdm je1 je2 je3 2010101 500.00 120.00 0.00 .................................. #tb_jh,指标情况表,yskmdm就是FZDM,但是此表yskmdm都是明细项。 yskmdm j1 j2 j3 2010101 400.00 20.00 0.00 .................................. --需求:得到含所有FZDM的指标、计划情况表#tb_zb_jh,并且按照FZDM分级汇总 #tb_zb_jh fzdm je1 je2 je3 j1 j2 j3 201 500.00 120.00 0.00 400.00 20.00 0.00 20101 500.00 120.00 0.00 400.00 20.00 0.00 2010101 500.00 120.00 0.00 400.00 20.00 0.00 ........................ --我是这样是写的SQL,但是分级汇总的数据不对啊,求教! SELECT A.FZDM, je1=ISNULL(SUM(B.je1),0), je2=ISNULL(SUM(B.je2),0), je3=ISNULL(SUM(B.je3),0), j1=ISNULL(SUM(C.j1),0), j2=ISNULL(SUM(C.j2),0), j3=ISNULL(SUM(C.j3),0) FROM #tb_yskm as A LEFT JOIN #tb_zb as B ON B.YSKMDM like A.FZDM+'%' LEFT JOIN #tb_jh as C ON C.YSKMDM like A.FZDM+'%' GROUP BY A.FZDM )t
select t1.FZDM,t1.je1,t1.je2,t1.je3,t2.j1,t2.j2,t2.j3 from( SELECT A.FZDM, je1=ISNULL(SUM(B.je1),0), je2=ISNULL(SUM(B.je2),0), je3=ISNULL(SUM(B.je3),0), FROM #tb_yskm as A LEFT JOIN #tb_zb as B ON B.YSKMDM like A.FZDM+'%' GROUP BY A.FZDM )t1 inner join( SELECT A.FZDM, j1=ISNULL(SUM(C.j1),0), j2=ISNULL(SUM(C.j2),0), j3=ISNULL(SUM(C.j3),0) FROM #tb_yskm as A LEFT JOIN #tb_jh as C ON C.YSKMDM like A.FZDM+'%' GROUP BY A.FZDM )t2 on t1.FZDM=t2.FZDM
------解决方案--------------------
SELECT A.FZDM,
je1=ISNULL((select SUM(B.je1) from #tb_zb as B where a.yskmdm = b.yskmdm),0)
FROM #tb_yskm as A
子查询即可,其它几项类推,呵呵,科目编码怎么是三位呀。