oldNo    newNo   
a1 a
a2 a
b1 b
b2 b
a1 c
b1 c
a d
e f
g h
k j
j holdNo代表旧的编号
newNo代表新的编号a2=a=a1=c=b1=b=b2=d
这几个编号是等价的e,f和别的编号没有等价关系
原样显示用一存储过程出来的结果是
a1 a
a2 a
b1 a
b a
b2 a
d a
e f
g h
k h
j h其中a或h从等价关系的编号中随机取出
a也可以是a1,h也可以是g---测试数据
 if exists (select * from sysobjects where id = OBJECT_ID('[rep]') and OBJECTPROPERTY(id, 'IsUserTable') = 1) 
DROP TABLE [rep] 
 go
 CREATE TABLE [rep] ( [oldNo] [varchar] (50) NULL , [newNo] [varchar] (50) NULL ) INSERT [rep] ( [oldNo] , [newNo] ) VALUES ( 'a1' , 'a' )
 INSERT [rep] ( [oldNo] , [newNo] ) VALUES ( 'a2' , 'a' )
 INSERT [rep] ( [oldNo] , [newNo] ) VALUES ( 'b1' , 'b' )
 INSERT [rep] ( [oldNo] , [newNo] ) VALUES ( 'b2' , 'b' )
 INSERT [rep] ( [oldNo] , [newNo] ) VALUES ( 'a1' , 'c' )
 INSERT [rep] ( [oldNo] , [newNo] ) VALUES ( 'b1' , 'c' )
 INSERT [rep] ( [oldNo] , [newNo] ) VALUES ( 'a' , 'd' )
 INSERT [rep] ( [oldNo] , [newNo] ) VALUES ( 'e' , 'f' )
 INSERT [rep] ( [oldNo] , [newNo] ) VALUES ( 'g' , 'h' )
 INSERT [rep] ( [oldNo] , [newNo] ) VALUES ( 'k' , 'j' )
 INSERT [rep] ( [oldNo] , [newNo] ) VALUES ( 'j' , 'h' )
 go

解决方案 »

  1.   

    原始数据是这样的,别看错了
           oldNo   newNo 
            a1 a
    a2 a
    b1 b
    b2 b
    a1 c
    b1 c
    a d
    e f
    g h
    k j
    j h
    结果是这样的
    a1 a
    a2 a
    b1 a
    b a
    b2 a
    d a
    e f
    g h
    k h
    j h
      

  2.   

    没看懂!
    是说a2=a=a1=c=b1=b=b2=d 
    a2,a1,b1,b2 可以用a,b,c,d的任意一个代替吗?好晕的逻辑!
      

  3.   

    循环?
    在程序中去做,用SQL好麻烦.
      

  4.   

    Quote=引用 6 楼 dawugui 的回复:]
    循环?
    在程序中去做,用SQL好麻烦.
    [/Quote]
    牛人就是厉害!逻辑俺都没看懂
      

  5.   

    oldNo可以用newNo替代
    例如 a可以替代a1,c可以替代a1,d又可以替代a
    说明a,a1,c,d是可以相互代替的编号   
      

  6.   

    你这个随机代替在SQL里面真的不好做 而在程序端容易多了