成本和库存核对.docx
《成本和库存核对.docx》由会员分享,可在线阅读,更多相关《成本和库存核对.docx(18页珍藏版)》请在冰豆网上搜索。
成本和库存核对
--下面这段小程序查成本系统的投入,产出是否和库存能对得上,可在查询分析器中直接执行
成本投入产出明细
declare@xchar(6)
select@x='200412'
--原材料
SELECT类型='1:
原材料',SUM(TA008)AS期初在制,SUM(TA015)AS本期投入,SUM(工单入库金额_料)AS入库转出金额,SUM(TA026)AS期末在制,
(SUM(TA008)+SUM(TA015)-SUM(工单入库金额_料))AS期末在制_计算,(SUM(TA026)-(SUM(TA008)+SUM(TA015)-SUM(工单入库金额_料)))as差异
FROMCSTTA
LEFTJOIN
(
SELECTZ.工单单别,Z.工单单号,SUM(LA005*LA017)AS工单入库金额_料FROM
(
(SELECTTG001AS入库单别,TG002AS入库单号,TG003AS入库序号,TG014AS
工单单别,TG015AS工单单号FROMMOCTG
LEFTJOINMOCTFONTG001=TF001ANDTG002=TF002
WHERETG022='Y'ANDSUBSTRING(TF003,1,6)=@xANDTG015<>'')
UNION
(SELECTTI001AS入库单别,TI002AS入库单号,TI003AS入库序号,TI013AS
工单单别,TI014AS工单单号FROMMOCTI
LEFTJOINMOCTHONTI001=TH001ANDTI002=TH002
WHERETH023='Y'ANDSUBSTRING(TH003,1,6)=@xANDTI013<>'')
UNION
(SELECTTL001AS入库单别,TL002AS入库单号,TL003AS入库序号,TL015AS
工单单别,TL016AS工单单号FROMMOCTL
LEFTJOINMOCTKONTL001=TK001ANDTL002=TK002
WHERETL024='Y'ANDSUBSTRING(TK003,1,6)=@xANDTL015<>'')
)ASZ
LEFTJOININVLAONZ.入库单别=LA006ANDZ.入库单号=LA007ANDZ.入库序号=LA008
GROUPBYZ.工单单别,Z.工单单号
)ASA
ONA.工单单别=TA003ANDA.工单单号=TA004
WHERETA002=@x
UNION
--人工
SELECT类型='2:
人工',SUM(TA009)AS期初在制,SUM(TA016)AS本期投入,SUM(工单入库金额_料)AS入库转出金额,SUM(TA027)AS期末在制,
(SUM(TA009)+SUM(TA016)-SUM(工单入库金额_料))AS期末在制_计算,(SUM(TA027)-(SUM(TA009)+SUM(TA016)-SUM(工单入库金额_料)))as差异
FROMCSTTA
LEFTJOIN
(
SELECTZ.工单单别,Z.工单单号,SUM(LA005*LA018)AS工单入库金额_料FROM
(
(SELECTTG001AS入库单别,TG002AS入库单号,TG003AS入库序号,TG014AS
工单单别,TG015AS工单单号FROMMOCTG
LEFTJOINMOCTFONTG001=TF001ANDTG002=TF002
WHERETG022='Y'ANDSUBSTRING(TF003,1,6)=@xANDTG015<>'')
UNION
(SELECTTI001AS入库单别,TI002AS入库单号,TI003AS入库序号,TI013AS
工单单别,TI014AS工单单号FROMMOCTI
LEFTJOINMOCTHONTI001=TH001ANDTI002=TH002
WHERETH023='Y'ANDSUBSTRING(TH003,1,6)=@xANDTI013<>'')
UNION
(SELECTTL001AS入库单别,TL002AS入库单号,TL003AS入库序号,TL015AS
工单单别,TL016AS工单单号FROMMOCTL
LEFTJOINMOCTKONTL001=TK001ANDTL002=TK002
WHERETL024='Y'ANDSUBSTRING(TK003,1,6)=@xANDTL015<>'')
)ASZ
LEFTJOININVLAONZ.入库单别=LA006ANDZ.入库单号=LA007ANDZ.入库序号=LA008
GROUPBYZ.工单单别,Z.工单单号
)ASA
ONA.工单单别=TA003ANDA.工单单号=TA004
WHERETA002=@x
UNION
--制费
SELECT类型='3:
制费',SUM(TA010)AS期初在制,SUM(TA017)AS本期投入,SUM(工单入库金额_料)AS入库转出金额,SUM(TA028)AS期末在制,
(SUM(TA010)+SUM(TA017)-SUM(工单入库金额_料))AS期末在制_计算,(SUM(TA028)-(SUM(TA010)+SUM(TA017)-SUM(工单入库金额_料)))as差异
FROMCSTTA
LEFTJOIN
(
SELECTZ.工单单别,Z.工单单号,SUM(LA005*LA019)AS工单入库金额_料FROM
(
(SELECTTG001AS入库单别,TG002AS入库单号,TG003AS入库序号,TG014AS
工单单别,TG015AS工单单号FROMMOCTG
LEFTJOINMOCTFONTG001=TF001ANDTG002=TF002
WHERETG022='Y'ANDSUBSTRING(TF003,1,6)=@xANDTG015<>'')
UNION
(SELECTTI001AS入库单别,TI002AS入库单号,TI003AS入库序号,TI013AS
工单单别,TI014AS工单单号FROMMOCTI
LEFTJOINMOCTHONTI001=TH001ANDTI002=TH002
WHERETH023='Y'ANDSUBSTRING(TH003,1,6)=@xANDTI013<>'')
UNION
(SELECTTL001AS入库单别,TL002AS入库单号,TL003AS入库序号,TL015AS
工单单别,TL016AS工单单号FROMMOCTL
LEFTJOINMOCTKONTL001=TK001ANDTL002=TK002
WHERETL024='Y'ANDSUBSTRING(TK003,1,6)=@xANDTL015<>'')
)ASZ
LEFTJOININVLAONZ.入库单别=LA006ANDZ.入库单号=LA007ANDZ.入库序号=LA008
GROUPBYZ.工单单别,Z.工单单号
)ASA
ONA.工单单别=TA003ANDA.工单单号=TA004
WHERETA002=@x
UNION
--加工
SELECT类型='4:
加工',SUM(TA011)AS期初在制,SUM(TA018)AS本期投入,SUM(工单入库金额_料)AS入库转出金额,SUM(TA029)AS期末在制,
(SUM(TA011)+SUM(TA018)-SUM(工单入库金额_料))AS期末在制_计算,(SUM(TA029)-(SUM(TA011)+SUM(TA018)-SUM(工单入库金额_料)))as差异
FROMCSTTA
LEFTJOIN
(
SELECTZ.工单单别,Z.工单单号,SUM(LA005*LA020)AS工单入库金额_料FROM
(
(SELECTTG001AS入库单别,TG002AS入库单号,TG003AS入库序号,TG014AS
工单单别,TG015AS工单单号FROMMOCTG
LEFTJOINMOCTFONTG001=TF001ANDTG002=TF002
WHERETG022='Y'ANDSUBSTRING(TF003,1,6)=@xANDTG015<>'')
UNION
(SELECTTI001AS入库单别,TI002AS入库单号,TI003AS入库序号,TI013AS
工单单别,TI014AS工单单号FROMMOCTI
LEFTJOINMOCTHONTI001=TH001ANDTI002=TH002
WHERETH023='Y'ANDSUBSTRING(TH003,1,6)=@xANDTI013<>'')
UNION
(SELECTTL001AS入库单别,TL002AS入库单号,TL003AS入库序号,TL015AS
工单单别,TL016AS工单单号FROMMOCTL
LEFTJOINMOCTKONTL001=TK001ANDTL002=TK002
WHERETL024='Y'ANDSUBSTRING(TK003,1,6)=@xANDTL015<>'')
)ASZ
LEFTJOININVLAONZ.入库单别=LA006ANDZ.入库单号=LA007ANDZ.入库序号=LA008
GROUPBYZ.工单单别,Z.工单单号
)ASA
ONA.工单单别=TA003ANDA.工单单号=TA004
WHERETA002=@x
UNION
--料工费合计
SELECT类型='5:
料工费合计',SUM(TA007)AS期初在制,SUM(TA014)AS本期投入,SUM(工单入库金额_料)AS入库转出金额,SUM(TA025)AS期末在制,
(SUM(TA007)+SUM(TA014)-SUM(工单入库金额_料))AS期末在制_计算,(SUM(TA025)-(SUM(TA007)+SUM(TA014)-SUM(工单入库金额_料)))as差异
FROMCSTTA
LEFTJOIN
(
SELECTZ.工单单别,Z.工单单号,SUM(LA005*LA013)AS工单入库金额_料FROM
(
(SELECTTG001AS入库单别,TG002AS入库单号,TG003AS入库序号,TG014AS
工单单别,TG015AS工单单号FROMMOCTG
LEFTJOINMOCTFONTG001=TF001ANDTG002=TF002
WHERETG022='Y'ANDSUBSTRING(TF003,1,6)=@xANDTG015<>'')
UNION
(SELECTTI001AS入库单别,TI002AS入库单号,TI003AS入库序号,TI013AS
工单单别,TI014AS工单单号FROMMOCTI
LEFTJOINMOCTHONTI001=TH001ANDTI002=TH002
WHERETH023='Y'ANDSUBSTRING(TH003,1,6)=@xANDTI013<>'')
UNION
(SELECTTL001AS入库单别,TL002AS入库单号,TL003AS入库序号,TL015AS
工单单别,TL016AS工单单号FROMMOCTL
LEFTJOINMOCTKONTL001=TK001ANDTL002=TK002
WHERETL024='Y'ANDSUBSTRING(TK003,1,6)=@xANDTL015<>'')
)ASZ
LEFTJOININVLAONZ.入库单别=LA006ANDZ.入库单号=LA007ANDZ.入库序号=LA008
GROUPBYZ.工单单别,Z.工单单号
)ASA
ONA.工单单别=TA003ANDA.工单单号=TA004
WHERETA002=@x
工单成本投入产出明细
declare@xchar(6)
select@x='200412'
--原材料
SELECT类型='1:
原材料',TA003AS工单单别,TA004as工单单号,SUM(TA008)AS期初在制,SUM(TA015)AS本期投入,
CASE
WHENSUM(工单入库金额_料)ISNULLTHEN0
ELSESUM(工单入库金额_料)
END
AS入库转出金额,SUM(TA026)AS期末在制,
(SUM(TA008)+SUM(TA015)-
CASE
WHENSUM(工单入库金额_料)ISNULLTHEN0
ELSESUM(工单入库金额_料)
END
)AS期末在制_计算,(SUM(TA026)-(SUM(TA008)+SUM(TA015)-
CASE
WHENSUM(工单入库金额_料)ISNULLTHEN0
ELSESUM(工单入库金额_料)
END
))as差异
FROMCSTTA
LEFTJOIN
(
SELECTZ.工单单别,Z.工单单号,SUM(LA005*LA017)AS工单入库金额_料FROM
(
(SELECTTG001AS入库单别,TG002AS入库单号,TG003AS入库序号,TG014AS
工单单别,TG015AS工单单号FROMMOCTG
LEFTJOINMOCTFONTG001=TF001ANDTG002=TF002
WHERETG022='Y'ANDSUBSTRING(TF003,1,6)=@xANDTG015<>'')
UNION
(SELECTTI001AS入库单别,TI002AS入库单号,TI003AS入库序号,TI013AS
工单单别,TI014AS工单单号FROMMOCTI
LEFTJOINMOCTHONTI001=TH001ANDTI002=TH002
WHERETH023='Y'ANDSUBSTRING(TH003,1,6)=@xANDTI013<>'')
UNION
(SELECTTL001AS入库单别,TL002AS入库单号,TL003AS入库序号,TL015AS
工单单别,TL016AS工单单号FROMMOCTL
LEFTJOINMOCTKONTL001=TK001ANDTL002=TK002
WHERETL024='Y'ANDSUBSTRING(TK003,1,6)=@xANDTL015<>'')
)ASZ
LEFTJOININVLAONZ.入库单别=LA006ANDZ.入库单号=LA007ANDZ.入库序号=LA008
GROUPBYZ.工单单别,Z.工单单号
)ASA
ONA.工单单别=TA003ANDA.工单单号=TA004
WHERETA002=@x
GROUPBYTA003,TA004
UNION
--人工
SELECT类型='2:
人工',TA003,TA004,SUM(TA009)AS期初在制,SUM(TA016)AS本期投入,
CASE
WHENSUM(工单入库金额_料)ISNULLTHEN0
ELSESUM(工单入库金额_料)
ENDAS入库转出金额,SUM(TA027)AS期末在制,
(SUM(TA009)+SUM(TA016)-
CASE
WHENSUM(工单入库金额_料)ISNULLTHEN0
ELSESUM(工单入库金额_料)
END
)AS期末在制_计算,(SUM(TA027)-(SUM(TA009)+SUM(TA016)-
CASE
WHENSUM(工单入库金额_料)ISNULLTHEN0
ELSESUM(工单入库金额_料)
END
))as差异
FROMCSTTA
LEFTJOIN
(
SELECTZ.工单单别,Z.工单单号,SUM(LA005*LA018)AS工单入库金额_料FROM
(
(SELECTTG001AS入库单别,TG002AS入库单号,TG003AS入库序号,TG014AS
工单单别,TG015AS工单单号FROMMOCTG
LEFTJOINMOCTFONTG001=TF001ANDTG002=TF002
WHERETG022='Y'ANDSUBSTRING(TF003,1,6)=@xANDTG015<>'')
UNION
(SELECTTI001AS入库单别,TI002AS入库单号,TI003AS入库序号,TI013AS
工单单别,TI014AS工单单号FROMMOCTI
LEFTJOINMOCTHONTI001=TH001ANDTI002=TH002
WHERETH023='Y'ANDSUBSTRING(TH003,1,6)=@xANDTI013<>'')
UNION
(SELECTTL001AS入库单别,TL002AS入库单号,TL003AS入库序号,TL015AS
工单单别,TL016AS工单单号FROMMOCTL
LEFTJOINMOCTKONTL001=TK001ANDTL002=TK002
WHERETL024='Y'ANDSUBSTRING(TK003,1,6)=@xANDTL015<>'')
)ASZ
LEFTJOININVLAONZ.入库单别=LA006ANDZ.入库单号=LA007ANDZ.入库序号=LA008
GROUPBYZ.工单单别,Z.工单单号
)ASA
ONA.工单单别=TA003ANDA.工单单号=TA004
WHERETA002=@x
GROUPBYTA003,TA004
UNION
--制费
SELECT类型='3:
制费',TA003,TA004,SUM(TA010)AS期初在制,SUM(TA017)AS本期投入,
CASE
WHENSUM(工单入库金额_料)ISNULLTHEN0
ELSESUM(工单入库金额_料)
END
AS入库转出金额,SUM(TA028)AS期末在制,
(SUM(TA010)+SUM(TA017)-
CASE
WHENSUM(工单入库金额_料)ISNULLTHEN0
ELSESUM(工单入库金额_料)
END
)AS期末在制_计算,(SUM(TA028)-(SUM(TA010)+SUM(TA017)-
CASE
WHENSUM(工单入库金额_料)ISNULLTHEN0
ELSESUM(工单入库金额_料)
END
))as差异
FROMCSTTA
LEFTJOIN
(
SELECTZ.工单单别,Z.工单单号,SUM(LA005*LA019)AS工单入库金额_料FROM
(
(SELECTTG001AS入库单别,TG002AS入库单号,TG003AS入库序号,TG014AS
工单单别,TG015AS工单单号FROMMOCTG
LEFTJOINMOCTFONTG001=TF001ANDTG002=TF002
WHERETG022='Y'ANDSUBSTRING(TF003,1,6)=@xANDTG015<>'')
UNION
(SELECTTI001AS入库单别,TI002AS入库单号,TI003AS入库序号,TI013AS
工单单别,TI014AS工单单号FROMMOCTI
LEFTJOINMOCTHONTI001=TH001ANDTI002=TH002
WHERETH023='Y'ANDSUBSTRING(TH003,1,6)=@xANDTI013<>'')
UNION
(SELECTTL001AS入库单别,TL002AS入库单号,TL003AS入库序号,TL015AS
工单单别,TL016AS工单单号FROMMOCTL
LEFTJOINMOCTKONTL001=TK001ANDTL002=TK002
WHERETL024='Y'ANDSUBSTRING(TK003,1,6)=@xANDTL015<>'')
)ASZ
LEFTJOININVLAONZ.入库单别=LA006ANDZ.入库单号=LA007ANDZ.入库序号=LA008
GROUPBYZ.工单单别,Z.工单单号
)ASA
ONA.工单单别=TA003ANDA.工单单号=TA004
WHERETA002=@x
GROUPBYTA003,TA004
UNION
--加工
SELECT类型='4:
加工',TA003,TA004,SUM(TA011)AS期初在制,SUM(TA018)AS本期投入,
CASE
WHENSUM(工单入库金额_料)ISNULLTHEN0
ELSESUM(工单入库金额_料)
END
AS入库转出金额,SUM(TA029)AS期末在制,
(SUM(TA011)+SUM(TA018)-
CASE
WHENSUM(工单入库金额_料)ISNULLTHEN0
ELSESUM(工单入库金额_料)
END
)AS期末在制_计算,(SUM(TA029)-(SUM(TA011)+SUM(TA018)-
CASE
WHENSUM(工单入库金额_料)ISNULLTHEN0
ELSESUM(工单入库金额_料)
END
))as差异
FROMCSTTA
LEFTJOIN
(
SELECTZ.工单单别,Z.工单单号,SUM(LA005*LA020)