我需要有关如何创建报告的建议,该报告将在第一列显示产品列表,后续列将是时间段。
Stock表格包含以下字段:
STOCK_ID StockQty InStock_Date UsageRate
我要做的是查看每个股票项目,并使用其使用率槽位将值用于未来的时间段。
例如,如果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
非常感谢任何帮助。
干杯
杰克答案 0 :(得分:0)
我通过创建一个临时表并报告它来解决了上述问题。
CREATE PROCEDURE `sp_DBR_Inventory_Test`()
BEGIN
DECLARE i INT默认值0; 声明Max_Period_Id int(3)默认为0;
select max(ceiling(Stock_QTY/Stock_Usage))
from hilmark.stock
into Max_Period_Id;
CREATE TEMPORARY TABLE 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中选择*;
END $$