私は一意のIDフィールドの重複を強調表示し、重複としてv2、v3を追加する必要があるplsqlパッケージを持っています。一意のID 111は、111回、111回、111回2回、111回3回発生します。重複と増分値の検索
マイコードアレックスプールに述べたように、それぞれが同一の、例えばようV2 111 V2 111 111 V2
PROCEDURE find_duplicates IS
c_amt INT;
c_id VARCHAR2(255);
c_id_new VARCHAR2(255);
v_count int;
cursor c_duplicates is
select UNIQUE_ID,Qty from (
select UNIQUE_ID, count(*) as Qty from dbo.Temp_Weekly_Export_File
group by UNIQUE_ID
having count(*) > 1) where Qty >1;
BEGIN
BEGIN
v_count := 0;
open c_duplicates;
LOOP
FETCH c_duplicates into c_id, c_amt;
v_count := v_count + 1;
c_id_new := c_id||'_V'||v_count;
--DBMS_OUTPUT.PUT_LINE('C_ID: '||c_id);
UPDATE dbo.Temp_Weekly_Export_File
SET UNIQUE_ID=c_id_new
where unique_id=c_id;
EXIT WHEN c_duplicates%NOTFOUND;
END LOOP;
END;
END;
これはすべて同じではありません。 3行すべてを3回更新しています。あなたのアップデートのフィルタを見てください - 毎回、IDと一致するループ*すべての*行が更新されます。実際には、いいえ、それは各IDのために1回だけループを回ります - それらはすべて111_v1として終わるべきですか?とにかく...変更されたIDもまだ存在しないのですか? –
ありがとうアレックス、これはSQLのdoableあなたは知っていますか?私はPLSQLにはとても慣れていません。はい、変更されたIDは存在しませんので、単にインクリメントするv2、v3などに追加するだけです。 –