现在有这样一个表,数据如下
310-310-30-3-310-310-31-310-310-310-310-3-310-310
310-310-310-31-310-0-310-310-0-310-310-310-31-310
310-310-310-310-310-310-31-0-310-3-310-30-310-310
310-310-310-30-310-310-310-310-0-31-310-310-0-310
310-310-310-310-310-310-3-10-310-3-310-31-310-310
310-310-310-30-310-310-310-0-310-310-310-3-30-310
310-310-310-310-310-310-310-0-0-31-310-31-310-310
310-310-310-310-310-310-3-310-310-310-31-30-310-3
3-310-30-310-310-310-30-310-310-1-310-310-310-310
310-310-310-310-310-310-310-10-310-31-310-3-3-310
310-310-31-31-310-310-310-1-310-310-310-3-310-310
3-310-310-310-310-310-310-10-310-31-310-3-310-310
310-0-310-31-310-0-310-310-310-310-310-310-30-310
310-310-0-310-310-310-30-310-310-310-3-310-30-310
3-310-310-310-310-310-3-10-310-310-310-31-310-310
310-310-310-31-310-310-310-310-310-3-310-3-310-30
我想实现这样一个功能
1、如果有10个记录;
2、第1个记录分别与2、3、4...10相交,出现一个交集结果为A1;
3、第2个记录分别与3、4、5...10相交,出现一个交集结果为A2;
4、第3个记录分别与4、5、6...10相交,出现一个交集结果为A3;

5、第8个记录分别与9、10相交,出现一个交集结果为A8;
6、第9个记录分别与10相交,出现一个交集结果为A9;
在数据库中如何实现啊,现在没有一点头绪,大家指点一下,谢谢了

解决方案 »

  1.   

    declare @count1 int,@count2 int
    set @count1 = 0,@count2=2
    while @count1<10
      begin
    while @count2<=10-@count1
      begin
      第@count1个记录和第@count2个记录相交
      set @count2= @count2+1
    end
    @count2
      end
      

  2.   

    关键是楼主也没说个结果,真不好办.拆分的函数参考如下:/*
    功能:实现split功能的函数
    */create function dbo.fn_split 
    (
    @inputstr varchar(8000), 
    @seprator varchar(10)
    )
    returns @temp table (a varchar(200))
    as begin
    declare @i intset @inputstr = rtrim(ltrim(@inputstr))
    set @i = charindex(@seprator, @inputstr)while @i >= 1
    begin
    insert @temp values(left(@inputstr, @i - 1))set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)
    set @i = charindex(@seprator, @inputstr)
    endif @inputstr <> '\'
    insert @temp values(@inputstr)return 
    end
    go--调用declare @s varchar(1000)set @s='1,2,3,4,5,6,7,8,55'select * from dbo.fn_split(@s,',')drop function dbo.fn_split 
      

  3.   

    我写了个小程序,实际存在数据库中以后,就是14列数据
    然后在程序中循环找出交集,然后再交集,直到我选出交集最多的数据出来
    但是数据量比较大,大约有1万行,运算速度太慢,所以想通过数据库来实现,看看大家有没有更好的办法来处理
    SPLIT这个我已经实现了,现在就是想快速的找出这些交集数据出来