日期:2014-05-17  浏览次数:20451 次

.计算一个表中的记录与其他记录相比较的数量!
有一个表,有字段ID,F1-F9,SUM。F1-F9的值由1,2,3组成。
(为了好理解,本例子中数据只改变了F1,F2的值,其他的字段值不变)
ID  F1  F2  F3  F4  F5  F6  F7  F8  F9  SUM
1   1   2   2   3   3   1   2   3   3
2   2   2   2   3   3   1   2   3   3
3   3   2   2   3   3   1   2   3   3
4   3   3   2   3   3   1   2   3   3
5   3   1   2   3   3   1   2   3   3

现计算每一条记录和其他记录字段相同数为8的数量,并将值存到当前记录SUM字段中。
例如:ID1和其他记录比较,与ID2有8个字段相同,与ID3有8个字段相同,与ID4有7个字段相同,
与ID5有7个字段相同,所以8个字段相同的数量为2,记录1的SUM值得到为2;
如此,依次比较ID2和其他记录的数量,依次比较ID3和其他记录的数量,
      依次比较ID4和其他记录的数量,依次比较ID5和其他记录的数量.
结果如下表
ID  F1  F2  F3  F4  F5  F6  F7  F8  F9  SUM
1   1   2   2   3   3   1   2   3   3   2
2   2   2   2   3   3   1   2   3   3   2
3   3   2   2   3   3   1   2   3   3   4
4   3   3   2   3   3   1   2   3   3   2
5   3   1   2   3   3   1   2   3   3   2

(表中记录数量可能是几万条,所以求运算速度比较快的方法) 
已用下面的方法实现!现金问题是,表中数据比较多,下面的方法比较慢。有什么办法思路可以快速实现?

create table tb(ID int,F1 int,F2 int,F3 int,F4 int,F5 int,F6 int,F7 int,F8 int,F9 int,[SUM] int) 
insert into tb values(1 ,1 ,2 ,2 ,3 ,3 ,1 ,2 ,3 ,3 ,null) 
insert into tb values(2 ,2 ,2 ,2 ,3 ,3 ,1 ,2 ,3 ,3 ,null)