我需要有关如何创建报告的建议,该报告将在第一列中显示产品列表,随后的列将是时间段。
库存表具有以下字段:
股票编号
库存数量
InStock_Date
使用率
我要做的是查看每个库存物料,并使用其“使用率”插槽将其值设置为将来的时间段。
例如,如果ProductA当前有库存,库存数量为100,每周使用率为10,那么我需要在接下来的10个星期内填充数量为10的报告。
ProductB的库存数量可能为30,使用率为4 /周,所以我需要在接下来的7天填充表格的下一行(值为4),在第8周填充剩余的库存2。以此类推。
另一个要求是处理将来出现的产品,例如从现在起的5个星期。我想执行上述操作,但是开始的周将是第5周。
我想做的另一件事是对上述内容进行计算,例如将每周数量乘以产品售价,以得出每周的预期收入。
我正在使用MYSQL 5,并尝试了以下解决方案:
CREATE PROCEDURE sp_DBR_Inventory_Test()
BEGIN
DECLARE i INT Default 0;
declare Max_Period_Id int(3) default 0;
select max(ceiling(Stock_QTY/Stock_Usage))
from hilmark.stock
into Max_Period_Id;
simple_loop:
LOOP SET i=i+1;
select Stock_Id,
Stock_Usage
from hilmark.stock;
IF i=Max_Period_Id THEN LEAVE simple_loop; END IF;
END LOOP simple_loop;
END
非常感激任何的帮助。
干杯
杰克
最佳答案
我已经通过创建一个临时表并对其进行报告解决了上述问题。
CREATE PROCEDURE `sp_DBR_Inventory_Test`()
开始
DECLARE i INT默认值0;默认值为0。
声明Max_Period_Id int(3)默认为0;
select max(ceiling(Stock_QTY/Stock_Usage))
from hilmark.stock
into Max_Period_Id;
创建临时表salestimeline_tmp(
Stock_ID int(4),Period_ID int(2),Sales_Qty int(3));
simple_loop: LOOP
SET i=i+1;
insert into salestimeline_tmp
select a.Stock_Id,
i,
case
when a.Stock_Usage*i >= a.Stock_Qty
then
case
when (a.Stock_Usage*i-a.Stock_Qty) < a.Stock_Usage then (a.Stock_Qty-a.Stock_Usage*(i-1))
else
0
end
else
a.Stock_Usage
end as SUsage
from hilmark.stock a;
IF i=Max_Period_Id THEN LEAVE simple_loop;
END IF;
END LOOP simple_loop;
从salestimeline_tmp中选择*;
结束
$$
关于mysql - MYSQL:需要帮助来创建库存耗尽报告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25762217/