有數據table1:(生產排程表)
上線日      訂單號  機型   要生產數量  產能/H  工時    出貨日期
2003/8/30  UC4989   7280     504        330    1.53       2003/9/1
2003/8/30  UC4990   7280    1008        330    3.05       2003/9/2
2003/8/30  AT4991   2812    1008        300    3.36       2003/9/1
2003/8/31   AC4950   2838    900         300    3         2003/9/3
2003/8/31   AC4951   2838    600         300    2         2003/9/4
2003/8/31   AC4957   2838    600         300    2         2003/9/4
2003/9/1   AC4951   2838    500         300    1.67       2003/9/4
2003/9/1   AC4952   2838    500         300    1.67       2003/9/4
2003/9/2   AC4954   2838    500         300    1.67       2003/9/4
2003/9/3   AC4956   2838    500         300    1.67       2003/9/4
.             .      .      .           .      .           .
.             .      .      .           .      .           .
table2:(訂單表)     訂單號  機型   要生產數量  產能/H  工時    出貨日期
     ab1234  2838     600       300      2          2003/9/3
---------------------------------------------------------------------
問題:(目的是把table2的數據insert到table1中且確定"上線日"  )
條件:
  以table2中一條數據訂單號是ab1234為例:
  把table2的數據insert到table1中,‘上線日’默認為出貨日期的前4天
即2003/8/30
當2003/8/30這天的工時和>8時,則insert到下一天(即2003/8/31);
 又若2003/8/31的工時和>8時,則insert到下一天(即2003/9/1);
 又若2003/9/1的工時和>8時,則insert到下一天(即2003/9/2);
 又若2003/9/2的工時和>8時,則insert到下一天(即2003/9/3);
因上線日已等於出貨日期,所以不再向下移動。*還一要求(能做到最好!):當滿足以上條件即已排到2003/8/31,但總工時已是9了,所以訂單ab1234
 不能全排進去,即只能排1個工時,另一工時要排到下一天。注:工時=要生產數量/產能/H

解决方案 »

  1.   

    我认为这些功能最好不要在数据层实现,在业务层实现更好一些。
    很多算法,在数据层使用 T-SQL 很难实现,在业务层,使用 c++,vb,.net 却很容易。这两个表的中有大量重复数据,也不利于系统健康。
      

  2.   

    我认为在SQL实现也可以。
    楼主这是简化了的MPS算法。以前写过,不记得了。
    产能: 标准产能,最低产能,最高产能。 还应该考虑当前已排的产能。
    排程: 分顺排和倒排。
    还有是否考虑拆单等情况。
      

  3.   

    各位高手:在vb,sql都可以,做得出來就ok了。幫一幫忙啊!!!!!!