表S_SENDD  ---数据源
结构如下:
billid , goodsid , qty 
0001   ,  30001  ,  300
0001   ,  30022  ,  600表M_BOM   ---物料清单
BILLID , MGOODSID , MQTY , DGOODSID , DQTY
12312  , 30001    ,  1   ,  8001    ,  1
12312  , 30001    ,  1   ,  8093    ,  113121  , 30022    ,  1   ,  8972    ,  1
13121  , 30022    ,  1   ,  8822    ,   1  要求结果:  销售订单有多少个货品则生成多少张生产工单.
生产工单M_ORDER --主表
BILLID , GOODSID , QTY 
2323   , 30001   ,  1M_ORDERD生产工单细表 --从表
billid ,  goodsid , qty  
2323  ,  8001    ,  1
2323  ,  8093    ,  1
生产工单M_ORDER --主表
BILLID , GOODSID , QTY 
2423   , 30022   ,  1 M_ORDERD生产工单细表 --从表
billid ,  goodsid , qty  
2423  ,  8972    ,  1
2423  ,  8822    ,  1  
MSSQL2000
要求通过销售表S_SENDD中的货品编码GOODSID 分别生成多张生产任务单,希望能通过存储过程游标去完成,谢谢!!

解决方案 »

  1.   

    insert into M_ORDER
    select GOODSID,1
    from S_SENDDinsert into M_ORDERD
    select c.MGOODSID,1
    from M_ORDER a join S_SENDD b on a.GOODSID = b.GOODSID
    join M_BOM c on a.BILLID = b.BILLID???
      

  2.   

    生产工单M_ORDER --主表 的BILLID怎么生成?有何规则
      

  3.   


    谢谢你的回复:
     EXECUTE GETKEYID '', 1, @NEWBILLID OUTPUT  ---这个取最大生产任务单BILLID+1
     EXECUTE GETBILLCODE 407, @SYSBILLDATE, 1, @NEWBILLCODE OUTPUT
        ----这个取生产任务单最大单号+1    期中@SYSBILLDATE=DBO.SYSDATE ()
    如果生成N张生产任务单需要循环取最大BILLID+1 和最大单号+1