MYSQL:需要帮助创建库存耗尽报告

时间:2014-09-10 09:45:33

标签: mysql inventory stock

我需要有关如何创建报告的建议,该报告将在第一列显示产品列表,后续列将是时间段。

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

非常感谢任何帮助。

干杯

杰克

1 个答案:

答案 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 $$