日期:2014-05-18 浏览次数:20631 次
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)
insert into tb values(3 ,3 ,2 ,2 ,3 ,3 ,1 ,2 ,3 ,3 ,null)
insert into tb values(4 ,3 ,3 ,2 ,3 ,3 ,1 ,2 ,3 ,3 ,null)
insert into tb values(5 ,3 ,1 ,2 ,3 ,3 ,1 ,2 ,3 ,3 ,null)
go
update tb set [sum] = t.cnt from tb ,
(
select m.id , count(1) cnt
from tb m, tb n where m.id <> n.id and
(case when m.f1 = n.f1 then 1 else 0 end) +
(case when m.f2 = n.f2 then 1 else 0 end) +
(case when m.f3 = n.f3 then 1 else 0 end) +
(case when m.f4 = n.f4 then 1 else 0 end) +
(case when m.f5 = n.f5 then 1 else 0 end) +
(case when m.f6 = n.f6 then 1 else 0 end) +
(case when m.f7 = n.f7 then 1 else 0 end) +
(case when m.f8 = n.f8 then 1 else 0 end) +
(case when m.f9 = n.f9 then 1 else 0 end) = 8
group by m.id
) t
where tb.id = t.id
select * from tb
drop table tb
/*
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
(所影响的行数为 5 行)
*/