我有一BOM,例如
母件  数量
F001   1子件  数量
C001   2
C002   4
C003   2
C004   1简单的说就是组成1个F001需要 C001  2个   C002 4个  C003  2个  C004   2个现在问题是这样
已知目前 C001  C002  C003  C004的库存量
如何才能算出最多能组合成多少个F001请大虾支招,多谢

解决方案 »

  1.   

    使用C001  C002  C003  C004各自的库存量 除以 组合成一个F001所需的数量,取最小值即可
    例:
    SELECT min(num) 
    FROM (SELECT C001/2 num  union all SELECT C002/4 union all select C003/2 
    union all select C004/2) t
      

  2.   

    --取最小的的即可.declare @C001_cnt as int
    declare @C002_cnt as int
    declare @C003_cnt as int
    declare @C004_cnt as int
    set @c001_cnt = val1
    set @c002_cnt = val2
    set @c003_cnt = val3
    set @c004_cnt = val4select top 1 数量 from
    (
      select @c001_cnt / 数量 数量 from tb where 子件 = 'C001'
      union all
      select @c002_cnt / 数量 数量 from tb where 子件 = 'C002'
      union all
      select @c003_cnt / 数量 数量 from tb where 子件 = 'C003'
      union all
      select @c004_cnt / 数量 数量 from tb where 子件 = 'C004'
    ) t
    order by 数量
      

  3.   


    select min(case when 子件='C001' then isnull(数量/2,0) when 子件='C002' then isnull(数量/4,0) when 子件='C003' then isnull(数量/2,0) when 子件='C004' then isnull(数量/2,0) end) 数量 from tb where 子件 in ('c001','c002','c003','c004')
      

  4.   

    在BOM表中应该是有子件物料用量的,你取子件物料用量中的可能量最少的一个就是可得到的最大件数!select min(子件库存量/单件用量) from BOM 表 where 父件=你指点的父件!
      

  5.   

    一般BOM应该都会做成递归调用结构吧,所以应该所有物料及可用量都存在一个表中,如果不是一个表中的话,哪就要jion 一下两个表了:select min(子件库存量/单件用量) from BOM子表 join BOM父表 on 子表.条件=父表.条件  where 父件=你指点的父件!