希望各位高手多多指教,小弟不胜感激!谢谢!
我有二张表
zwkmzd(科目字典)0表示不明细,1表示明细
  kmbh     kmmc      mx     js
  4101     生产成本  0       1
  410101    A产品     0       2
  41010101   料       1       3
  41010102   工       1       3
  41010103   费       1       3
  410102    B产品     0       2
  41010201   料       1       3
  41010202   工       1       3
  41010203   费       1       3 zwkmje(科目金额)
kmbh           qcye     jffs     dffs      dqye
4101                    660                660  
410101                  600                600 
41010101                100                100 
41010102                200                200  
41010103                300                300
410102                  60                 60  
41010201                10                 10 
41010202                20                 20  
41010203                30                 30
我要实现查询结果如下:
科目编号       期初金额        料          工          费          合计
410101(A产品)                  100         200         300         600   
410102(B产品)                  10          20          30          60
合计:                         110         220         330         660    

解决方案 »

  1.   


     首先说一句,你的表的结构设计不合理。
     
     如果非要写的话,可以这样:  select T0.kmbh,T1.Fields1,T2.Fields2,T3.Fields3 T0.Fields0 from 
    (select kmbh,jffs Fields0 from zwkmje 
    where kmbh in (select kmbh from zwkmzd where js=2)) T0,
    (select substring(kmbh,1,6) kmbh,jffs Fields1 from zwkmje 
    where substring(kmbh,7,2)='01' and substring(kmbh,1,6) in (select kmbh from zwkmzd where js=2)) T1,
    (select substring(kmbh,1,6) kmbh,jffs Fields2 from zwkmje 
    where substring(kmbh,7,2)='02' and substring(kmbh,1,6) in (select kmbh from zwkmzd where js=2)) T2,
    (select substring(kmbh,1,6) kmbh,jffs Fields3 from zwkmje 
    where substring(kmbh,7,2)='03'  and substring(kmbh,1,6) in (select kmbh from zwkmzd where js=2)) T3
    where 
    T0.kmbh=T1.kmbh and T1.kmbh=T2.kmbh and T1.kmbh=T3.kmbh对应关系
    科目编号   料          工          费          合计
    T0.kmbh  ,T1.Fields1  ,T2.Fields2,T3.Fields3 T0.Fields0