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

库存表具有以下字段:

股票编号
库存数量
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/

10-15 18:55