是不是递归呀,不知道在sql中递归好不好用。

解决方案 »

  1.   

    对不起,是我把问题弄复杂了,现在只问从l2 求c3 的sql语句和从c3求l3 的sql语句,请大家各显神通
      

  2.   

    create table #a (tid varchar(10),item varchar(10))
    insert #a values('T100','I1')
    insert #a values('T100','I2')
    insert #a values('T100','I5')
    insert #a values('T200','I2')
    insert #a values('T200','I4')
    insert #a values('T300','I2')
    insert #a values('T300','I3')
    insert #a values('T400','I1')
    insert #a values('T400','I2')
    insert #a values('T400','I4')
    insert #a values('T500','I1')
    insert #a values('T500','I3')
    insert #a values('T600','I2')
    insert #a values('T600','I3')
    insert #a values('T700','I1')
    insert #a values('T700','I3')
    insert #a values('T800','I1')
    insert #a values('T800','I2')
    insert #a values('T800','I3')
    insert #a values('T800','I5')
    insert #a values('T900','I1')
    insert #a values('T900','I2')
    insert #a values('T900','I3')
    declare @你的参数 int,@b varchar(8000),@c varchar(8000),@d varchar(8000),@e varchar(8000),@f varchar(8000),@g varchar(8000)
    select @你的参数=3,@b='',@c='',@d='',@e='',@f=''declare @dali table(liuri int)set rowcount @你的参数
      insert @dali select (select count(*) from sysobjects where id<=tem.id) from sysobjects tem
    set rowcount 0select @b=@b+'['+cast(liuri as varchar(10))+'].item,',@c=@c+'#a ['+cast(liuri as varchar(10))+'],' from @daliselect @e=@e+'['+cast(a.liuri as varchar(10))+'].tid=['+cast(b.liuri as varchar(10))+'].tid and ',@f=@f+'['+cast(a.liuri as varchar(10))+'].item<['+cast(b.liuri as varchar(10))+'].item and ' from @dali a,@dali b where a.liuri<b.liuri select @c=left(@c,len(@c)-1),@f=left(@f,len(@f)-4),@g=left(@b,len(@b)-1)exec( 'select '+@b+'count(*) 和 from '+@c+' where '+@e+@f+' group by '+@g+' having count(*)>1 ')go
    drop table #a                       ---此题在J9988,Haiwer两位老师指导下完成 [MSSQL MVP 大力]