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;
部分代碼,菜鳥一枚,希望得到各位大神的提點。
uj5u.com熱心網友回復:
樓主想要一個什么樣的結果呢?uj5u.com熱心網友回復:
任意22個一致就算重合? 有點過分了吧。任意的22個還會出現多少種排列組合的順序啊。
d1 d2 d3 d4
d1 d3 d2 d4
是不是都要考慮
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/96370.html
標籤:開發
