实施日志-成本报表sql参考案例原创
98人赞赏了该文章
1,428次浏览
编辑于2023年06月21日 09:02:33
一、按销售订单跟踪生产订单的每种成本项目的汇总金额
select T.订单编号,T.订单日期,T.客户名称,T.订单行号,T.产品编码,T.产品名称,T.订单数量,T.计量单位,T.工单号 ,T.工单行号 ,sum(case when t.成本项目='直接材料' then t.投入金额 else 0 end) as 直接材料 ,sum(case when t.成本项目='直接材料钢材' then t.投入金额 else 0 end) as 直接材料钢材 ,sum(case when t.成本项目='拆卸费' then t.投入金额 else 0 end) as 拆卸费 ,sum(case when t.成本项目='差旅费' then t.投入金额 else 0 end) as 差旅费 ,sum(case when t.成本项目='直接人工' then t.投入金额 else 0 end) as 直接人工 From ( select tm.FBILLNO as 订单编号,tm.FDATE as 订单日期,tbc.FNAME as 客户名称,td.fseq as 订单行号,tbm.FNUMBER as 产品编码,tbml.FNAME as 产品名称,td.FQTY as 订单数量,tbul.FNAME as 计量单位 ,tmo.FBILLNO as 工单号 ,tmod.FSEQ as 工单行号,s.fcostname as 成本项目,s.FCURRINPUTAMOUNT as 投入金额 from T_SAL_ORDER tm--销售订单 inner join T_SAL_ORDERentry td on tm.fid=td.fid inner join T_BD_CUSTOMER_L tbc on tm.FCUSTID=tbc.FCUSTID--客户 inner join T_BD_MATERIAL tbm on td.FMATERIALID=tbm.FMATERIALID--物料 inner join T_BD_MATERIAL_L tbml on tbm.FMATERIALID=tbml.FMATERIALID--物料描述 inner join T_BD_UNIT_L tbul on td.FUNITID=tbul.FUNITID--计量单位 left join T_PRD_MOENTRY tmod on tmod.FSALEORDERID=td.FID and tmod.FSALEORDERENTRYID=td.FENTRYID--工单明细 left join T_PRD_MO tmo on tmod.FID=tmo.FID--工单 left join --select s.FPRODUCTNO as MONumbere,s.FBILLSEQ as MOSeq,s.fcostname,sum(FSumCurrInputAmount) as MOInAmount ( --成本计算后数据获取--当期 select d.FPRODUCTNO,d.FBILLSEQ,d.FPROORDERTYPE --订单行数据 ,ce.FSumCurrInputAmount --本期总投入 ,ce.FCurrInputAmount ---本期投入 --成本项目明细行 ,ced.FCOSTITEMID ,tb1.fname as fcostname --成本项目 from T_CB_PROORDERINFO p inner join T_CB_PROORDERDIME d on p.FPRODUCTDIMEID=d.FPRODUCTDIMEID --生产订单维度信息表 --成本计算结果费用表:成本项目,费用项目 inner join T_CB_COSTCALEXPENSE ce on ce.FID=p.FID --费用分配总表 inner join T_CB_COSTCALEXPENSEDETAIL ced on ced.FENTRYID=ce.FENTRYID--费用分配细表 inner join T_HS_COSTITEM_L tb1 on ced.FCOSTITEMID=tb1.fcostitemid--成本项目 inner join T_CB_COSTCENTER_L tb2 on d.fcostcenterid=tb2.FCostcenterid--成本中心 --成本计算结果材料表:若需要获取子项物料则关联以下两个表 --inner join T_CB_COSTMATTERIAL cm on cm.FID=p.FID --inner join T_CB_COSTMATTERIALDETAIL cmd on cmd.FENTRYID=cm.FENTRYID where p.FENDINITKEY='1' -- 1-期末数据,0-期初数据 and d.FPROORDERTYPE='PO' --and d.FPRODUCTNO='MO000004' and d.FBILLSEQ=1 --订单编号行号 --and p.FACCTGID=100002 --核算内码,由核算体系组织年期唯一确定,获取时一定要加核算范围 union all --历史订单信息 --成本计算后数据获取--历史期间 select d.FPRODUCTNO,d.FBILLSEQ,d.FPROORDERTYPE --订单行数据 ,ce.FSumCurrInputAmount --本期总投入 ,ce.FCurrInputAmount ---本期投入 --成本项目明细行 ,ced.FCOSTITEMID ,tb1.fname as fcostname --成本项目 from T_CB_PROORDERINFO_H p inner join T_CB_PROORDERDIME d on p.FPRODUCTDIMEID=d.FPRODUCTDIMEID --生产订单维度信息表 --成本计算结果费用表:成本项目,费用项目 inner join T_CB_COSTCALEXPENSE_H ce on ce.FID=p.FID --费用分配总表 inner join T_CB_COSTCALEXPENSEDETAIL_H ced on ced.FENTRYID=ce.FENTRYID--费用分配细表 inner join T_HS_COSTITEM_L tb1 on ced.FCOSTITEMID=tb1.fcostitemid--成本项目 inner join T_CB_COSTCENTER_L tb2 on d.fcostcenterid=tb2.FCostcenterid--成本中心 --成本计算结果材料表:若需要获取子项物料则关联以下两个表 --inner join T_CB_COSTMATTERIAL cm on cm.FID=p.FID --inner join T_CB_COSTMATTERIALDETAIL cmd on cmd.FENTRYID=cm.FENTRYID where p.FENDINITKEY='1' -- 1-期末数据,0-期初数据 and d.FPROORDERTYPE='PO' --and d.FPRODUCTNO='MO000004' and d.FBILLSEQ=1 --订单编号行号 --and p.FACCTGID=100002 --核算内码,由核算体系组织年期唯一确定,获取时一定要加核算范围 )s on s.FPRODUCTNO=tmo.FBILLNO and s.FBILLSEQ=tmod.FSEQ --where s.FPRODUCTNO='MO000008' --group by s.FPRODUCTNO,s.FBILLSEQ ,s.fcostname )T group by T.订单编号,T.订单日期,T.客户名称,T.订单行号,T.产品编码,T.产品名称,T.订单数量,T.计量单位,T.工单号 ,T.工单行号
二、按工单显示材料明细-取值材料分配结果
select s.FPRODUCTNO as 工单编号,s.FBILLSEQ as 工单行号,s.clnumber as 材料编码,s.clname as 材料名称,s.FCURRINPUTAMOUNT 本期投入金额--此金额是投入明细,没有按工单汇总 from ( --成本计算后数据获取--当期 select d.FPRODUCTNO,d.FBILLSEQ,d.FPROORDERTYPE --订单行数据 ,tbb.FNUMBER as clnumber,tbbl.fname as clname ,cm.FCurrInputAmount --本期投入金额 from T_CB_PROORDERINFO p inner join T_CB_PROORDERDIME d on p.FPRODUCTDIMEID=d.FPRODUCTDIMEID --生产订单维度信息表 --成本计算结果费用表:成本项目,费用项目 --inner join T_CB_COSTCALEXPENSE ce on ce.FID=p.FID --费用分配总表 --inner join T_CB_COSTCALEXPENSEDETAIL ced on ced.FENTRYID=ce.FENTRYID--费用分配细表 --inner join T_HS_COSTITEM_L tb1 on ced.FCOSTITEMID=tb1.fcostitemid--成本项目 --inner join T_CB_COSTCENTER_L tb2 on d.fcostcenterid=tb2.FCostcenterid--成本中心 --成本计算结果材料表:若需要获取子项物料则关联以下两个表 inner join T_CB_COSTMATTERIAL cm on cm.FID=p.FID--材料分配明细表 --inner join T_CB_COSTMATTERIALDETAIL cmd on cmd.FENTRYID=cm.FENTRYID inner join T_BD_MATERIAL tbb on cm.FMATERIALID=tbb.FMATERIALID inner join T_BD_MATERIAL_L tbbl on tbb.FMATERIALID=tbbl.FMATERIALID where p.FENDINITKEY='1' -- 1-期末数据,0-期初数据 and d.FPROORDERTYPE='PO' --and d.FPRODUCTNO='MO000004' and d.FBILLSEQ=1 --订单编号行号 --and p.FACCTGID=100002 --核算内码,由核算体系组织年期唯一确定,获取时一定要加核算范围 union all--历史期间 --成本计算后数据获取--档期 select d.FPRODUCTNO,d.FBILLSEQ,d.FPROORDERTYPE --订单行数据 ,tbb.FNUMBER as clnumber,tbbl.fname as clname ,cm.FCurrInputAmount --本期投入金额 from T_CB_PROORDERINFO_H p inner join T_CB_PROORDERDIME d on p.FPRODUCTDIMEID=d.FPRODUCTDIMEID --生产订单维度信息表 --成本计算结果费用表:成本项目,费用项目 --inner join T_CB_COSTCALEXPENSE ce on ce.FID=p.FID --费用分配总表 --inner join T_CB_COSTCALEXPENSEDETAIL ced on ced.FENTRYID=ce.FENTRYID--费用分配细表 --inner join T_HS_COSTITEM_L tb1 on ced.FCOSTITEMID=tb1.fcostitemid--成本项目 --inner join T_CB_COSTCENTER_L tb2 on d.fcostcenterid=tb2.FCostcenterid--成本中心 --成本计算结果材料表:若需要获取子项物料则关联以下两个表 inner join T_CB_COSTMATTERIAL_H cm on cm.FID=p.FID--材料分配明细表 --inner join T_CB_COSTMATTERIALDETAIL cmd on cmd.FENTRYID=cm.FENTRYID inner join T_BD_MATERIAL tbb on cm.FMATERIALID=tbb.FMATERIALID inner join T_BD_MATERIAL_L tbbl on tbb.FMATERIALID=tbbl.FMATERIALID where p.FENDINITKEY='1' -- 1-期末数据,0-期初数据 and d.FPROORDERTYPE='PO' --and d.FPRODUCTNO='MO000004' and d.FBILLSEQ=1 --订单编号行号 --and p.FACCTGID=100002 --核算内码,由核算体系组织年期唯一确定,获取时一定要加核算范围 )s
推荐阅读