本文包含两个SQL查询语句。第一个语句用于跟踪销售订单到生产订单的每种成本项目的汇总金额,包括直接材料、直接材料钢材、拆卸费、差旅费和直接人工等成本项目的投入金额,并关联了销售订单、工单及其明细、成本计算等表。第二个语句用于显示工单的材料明细,即获取成本计算后的材料分配结果,包括材料编码、材料名称及本期投入金额,同样涉及生产订单、成本计算及材料表等。两个查询均从当前和历史数据中获取信息。

有用

反馈

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

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



标签: none

添加新评论