有一表如下:MRP_NO     BZ_KND          ZX_NOFE012EA0   BULK KAD00500
FE012EA0   BULK100E-2 KAJ02400 另一表如下:MRP_NO    PRD_NOFE012EA0  JLEE012B
FE012EA0  JVBE0242把第一表的ZX_NO按BZ_KND分類插入第二表的PRD_NO中,成如下二表MRP_NO    PRD_NO
FE012EA0  JLEE012B
FE012EA0  JVBE0242
FE012EA0  KAD00500
____________________________MRP_NO    PRD_NOFE012EA0  JLEE012B
FE012EA0  JVBE0242
FE012EA0  KAJ02400 

解决方案 »

  1.   

    insert into table2 select MRP_NO ,ZX_NO from table1 order by BZ_KND
      

  2.   

    簡單點,如下
    如何把1,2(如下表)按A,B分類分別插入表二中MRP_NO     BZ_KND          ZX_NOFE012EA0    A               1
    FE012EA0    B               2       (表一)------------------------------------------
    成如下數據:MRP_NO    PRD_NOFE012EA0  JLEE012B
    FE012EA0  JVBE0242
    FE012EA0  1
    FE012EA0  JLEE012B
    FE012EA0  JVBE0242
    FE012EA0  2(表二)
      

  3.   

    实在不太懂你的意思,那样表二的数据不就重复了吗?还有,把zx_no 按bz_knd 分类插入
    这句话也不太懂,
    那像下面这样的数据,要怎么个分类插入呢?MRP_NO     BZ_KND          ZX_NOFE012EA0    A               1
    FE012EA0    B               1   
    FE012EA0    B               2       
    FE012EA0    B               3       (表一)
      

  4.   

    還是按BZ_KND(A,B)分類,把ZX_NO插入表二成如下數據:MRP_NO    PRD_NOFE012EA0  JLEE012B
    FE012EA0  JVBE0242
    FE012EA0  1
    FE012EA0  JLEE012B
    FE012EA0  JVBE0242
    FE012EA0  1
    FE012EA0  2
    FE012EA0  3
    表二重復的是表一的數據,拿企業來說,表一是原料BOM,表二是包裝BOM(據于企業特殊原因,當初沒把包裝BOM
    建在一起,現在又想合并,所以保持表一原料BOM不變把包裝BOM寫過來,或也可以保持包裝BOM不變把主料BOM寫
    過去.....)
      

  5.   

    分兩步做
    第一步:根據表1中每一個mrp_no 有幾個bz_knd ,就復制幾次表2中的原始資料。
    第二步:把表1中的每條記錄mrp_no,zx_no 添加到表1中(這個簡單,一句就OK了)第一步:
    首先在表2加一字段如kk字段(int),值都設為1,用來表示這是原始bom資料.
    declare @mrp_no varchar(20)
    declare @num int,@rowcount int
    declare mrp_cur cursor --定義游標
    for 
    select distinct mrp_no from table1open mrp_cur --打開游標
    fetch next from mrp_cur into @mrp_no--得到第一條記錄的資料
    --開始循環--
    while @@fetch_status=0 --如果fetch操作成功
    begin
      set @num=1
      select @rowcount=isnull(count(distinct bz_knd),0) from table1 where mrp_no=@mrp_no --得到這個mrp_no 有多少個bz_knd
      while @num<=@rowcount
        begin
          insert into table2 (mrp_no,prd_no) select mrp_no ,prd_no from table2 where mrp_no=@mrp_no and kk=1
          set @num=@num+1
        end
      fetch next from mrp_cur into @mrp_no --得到下一條記錄的資料
    enddeallocate mrp_cur --關閉游標
    第二步:
    insert into table2 (mrp_no,prd_no) select mrp_no,zx_no from table1PS 沒經過測驗,不敢保證正確性。而且我的理解也可能有誤。
    又PS 這樣你的表2中會有大量的重復數據,應該還有其它字段你沒寫出來吧?主鍵是什麼?
      

  6.   

    出现重复数据证明表设计有缺陷,楼主花点心思在其他方面吧,这个SQL给你求到,到头来效率也很低。
      

  7.   

    多謝大家的參與與意見,特別感謝merker2002(小樣的),呵呵,小樣的好象黑龍江的.....
      

  8.   

    這只是一次性把資料合并...也就是自動重建主料加包裝的最底層(子件)BOM,不同的包裝,主料肯定有重復的,所以數據一定會很多重復......