实施日志-成本报表sql参考案例原创
金蝶云社区-Mr舍得
Mr舍得
98人赞赏了该文章 1,428次浏览 未经作者许可,禁止转载编辑于2023年06月21日 09:02:33

一、按销售订单跟踪生产订单的每种成本项目的汇总金额

image.png

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.工单行号


二、按工单显示材料明细-取值材料分配结果

image.png

	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


赞 98