oracle数据库有n条记录,每条记录有45个字段,其中第字段是id,后面44个字段是44个数据。现在有44个数据,如果其中22个数据与表中一条记录的任意22个或以上数据重合,那么将两条记录视为同一条。
如何实现?
自己写了点,但不知道想法对不对,而且虽然能编译,但是执行出错,一直在改。
create or replace procedure c_pare
(d1 in varchar2,d2 in varchar2,d3 in varchar2,d4 in varchar2,

is
c integer:=0;
begin
  select x.tid into c from (
  select     count(*) as a,t1.*,
             case when t1.AMELOGENIN_1 in (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,d32,d33,d34,d35,d36,d37,d38,d39,d40,d41,d42,d43,d44)then 1 else 0 end s1,
             case when t1.AMELOGENIN_2 in (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,d32,d33,d34,d35,d36,d37,d38,d39,d40,d41,d42,d43,d44)then 1 else 0 end s2,
             case when t1.d8s1179_3  in (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,d32,d33,d34,d35,d36,d37,d38,d39,d40,d41,d42,d43,d44)then 1 else 0 end s3,
             case when t1.d8s1179_2 in (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,d32,d33,d34,d35,d36,d37,d38,d39,d40,d41,d42,d43,d44)then 1 else 0 end s4,
             case when t1.d21s11_1 in (d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,d32,d33,d34,d35,d36,d37,d38,d39,d40,d41,d42,d43,d44)then 1 else 0 end s5
        from t1)x
        where x.a>0 and s1+s2+s3+s4+s54>=22; 
 end;   
  部分代码,菜鸟一枚,希望得到各位大神的提点。