34,593
社区成员
发帖
与我相关
我的任务
分享
;WITH A1Cte AS(
SELECT
id
,pici
,lydate
,jjmxid
,SUM(cprks)OVER(PARTITION BY pici)cprks
,MAX(ynend)OVER(PARTITION BY pici)ynend
FROM A1
--月份条件加在此处
)
SELECT
T.pici
,T.lydate[日期]
,C1.yclname[原材料]
,T.lynum[领用量]
,T.cprks[入库数]
,T.lynum[实际消耗]
,T.cprks*B2.XHB[标准消耗]
,ABS(T.lynum-T.cprks*B2.XHB)[消耗差]
,ABS(T.lynum*B2.price-T.cprks*B2.XHB*B2.price)[成本对比]
FROM
(SELECT T1.pici
,MAX(T1.lydate)lydate
,T1.jjmxid
,SUM(A2.lynum)[lynum]
,T1.cprks
,A2.yclid
FROM A1Cte T1
JOIN A2 ON T1.id=A2.aid
WHERE T1.ynend='Y'
GROUP BY T1.pici
,T1.jjmxid
,T1.cprks
,A2.yclid
)T
LEFT JOIN B2 ON T.jjmxid=B2.bid AND T.yclid=B2.yclid
LEFT JOIN C1 ON T.yclid=C1.id
你直接放下面也可以SELECT
T.批次
,T.领用日期[日期]
,C1.原材料名称[原材料]
,SUM(T.领用数量)[领用量]
,SUM(T.产品入库数)[入库数]
,SUM(T.领用数量)-SUM(T.产品入库数*B2.每顿消耗量)[消耗差]
,SUM(T.领用数量*B2.每顿价格)-SUM(T.产品入库数*B2.每顿消耗量*B2.每顿价格)[成本对比]
FROM
(SELECT A1.批次,A1.领用日期,A1.经济模型ID
,SUM(A2.领用数量)[领用数量]
,A1.产品入库数
,A2.ID
FROM A1
LEFT JOIN A2 ON A1.ID=A2.生产情况信息ID
GROUP BY A1.批次,A1.领用日期,A1.经济模型ID
,A1.产品入库数
,A2.ID
)T
LEFT JOIN B2 ON T.经济模型ID=B2.经济模型ID AND T.ID=B2.ID
LEFT JOIN C1 ON T.ID=C1.ID
GROUP BY
T.批次
,T.领用日期
,C1.原材料名称
--统计某月份的完成情况
select count(*) from 子表A1
where 是否完成=N'Y' and Month(日期)='某月'
--第二个问题
select c.批次,c.领用日期,c.领用数量,c.产品入库数,(c.领用数量 - (d.每吨消耗量 * c.产品入库数)) as Consume,
((c.领用数量 - (d.每吨消耗量 * c.产品入库数))*d.每吨价格) as Cost
from
(select a.经济模型ID,a.批次,a.领用日期,b.原材料名称,b.领用数量,b.产品入库数 from A1 as a
left join A2 as b
on a.原材料名称=b.原材料名称) as c
left join B1 as d
on c.经济模型ID=d.ID
group by c.批次,c.领用日期,c.领用数量,c.产品入库数
A1Cte AS(
SELECT
id
,pici
,lydate
,jjmxid
,SUM(cprks)OVER(PARTITION BY pici)cprks
,MAX(ynend)OVER(PARTITION BY pici)ynend
FROM A1
--月份条件加在此处
)
SELECT
T.pici
,T.lydate[日期]
,C1.yclname[原材料]
,T.lynum[领用量]
,T.cprks[入库数]
,T.lynum[实际消耗]
,T.cprks*B2.XHB[标准消耗]
,ABS(T.lynum-T.cprks*B2.XHB)[消耗差]
,ABS(T.lynum*B2.price-T.cprks*B2.XHB*B2.price)[成本对比]
FROM
(SELECT T1.pici
,MAX(T1.lydate)lydate
,T1.jjmxid
,SUM(A2.lynum)[lynum]
,T1.cprks
,A2.yclid
FROM A1Cte T1
JOIN A2 ON T1.id=A2.aid
WHERE T1.ynend='Y'
GROUP BY T1.pici
,T1.jjmxid
,T1.cprks
,A2.yclid
)T
LEFT JOIN B2 ON T.jjmxid=B2.bid AND T.yclid=B2.yclid
LEFT JOIN C1 ON T.yclid=C1.id
试试这个SELECT
T.pici
,MAX(T.lydate)[日期]
,C1.yclname[原材料]
,SUM(T.lynum)[领用量]
,SUM(T.cprks)[入库数]
,SUM(T.lynum)[实际消耗]
,SUM(T.cprks*B2.XHB)[标准消耗]
,ABS(SUM(T.lynum)-SUM(T.cprks*B2.XHB))[消耗差]
,ABS(SUM(T.lynum*B2.price)-SUM(T.cprks*B2.XHB*B2.price))[成本对比]
FROM
(SELECT A1.pici
,A1.lydate
,A1.jjmxid
,SUM(A2.lynum)[lynum]
,A1.cprks
,A2.yclid
,MAX(A1.ynend)OVER(PARTITION BY A1.pici)ynend
FROM A1
JOIN A2 ON A1.id=A2.aid
GROUP BY A1.pici
,A1.lydate
,A1.jjmxid
,A1.cprks
,A2.yclid
,A1.ynend
)T
LEFT JOIN B2 ON T.jjmxid=B2.bid AND T.yclid=B2.yclid
LEFT JOIN C1 ON T.yclid=C1.id
WHERE T.ynend='Y'
GROUP BY
T.pici
,C1.yclname
应该是这样,你试试