我正在尝试找到一种方法来按周数计算初始库存。 我刚刚根据此请求成功计算了第 10 周到第 20 周之间的库存“进货”和“缺货”情况。
有人可以给我完整的请求来计算最终库存和初始库存吗?
SELECT
`week` ,
SUM(case
when `week` between 10 AND 20 and `etat` =1
then 1
else 0
end) AS inn
,
SUM(case
when `week` between 10 AND 20 and `etat` =2
then 1
else 0
end) AS out
FROM fait_stock f
where 1=1
group by `week`
having `week` between 10 AND 20
编辑
我想计算前几周的库存(初始库存意味着周<10),例如第10周我有5个。第11周应该是5+(第11周的库存)。第 12 周应该是 5+(第 11 周的库存)+(第 12 周的库存),其他周相同。
最佳答案
首先 - 您可以将查询写得更短:
SELECT
`week` ,
SUM(IF(`etat`=1, 1, 0)) AS inn,
SUM(IF(`etat`=2, 1, 0)) AS `out`
FROM fait_stock
WHERE `week` BETWEEN 10 AND 20
GROUP BY `week`
如果您现在将其与自身连接(稍作修改,如果您希望周的总和 < 10),则可以计算小于或等于给定周的所有周的总和:
SELECT f1.`week`, SUM(f2.inn) AS inn, SUM(f2.`out`) AS `out`
FROM (
SELECT
`week` ,
SUM(IF(`etat`=1, 1, 0)) AS inn,
SUM(IF(`etat`=2, 1, 0)) AS `out`
FROM fait_stock
WHERE `week` BETWEEN 10 AND 20
GROUP BY `week`
) AS f1
JOIN (
SELECT
`week` ,
SUM(IF(`etat`=1, 1, 0)) AS inn,
SUM(IF(`etat`=2, 1, 0)) AS `out`
FROM fait_stock
WHERE `week` BETWEEN 1 AND 20
GROUP BY `week`
) AS f2 ON f2.`week` <= f1.`week`
GROUP BY f1.`week`
关于mysql - 如何用MySql计算初始股票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33963129/