------------------------------------------------------------ -- STEP 1: CREATE BACKUP TABLE FOR DUPLICATE CELL RECORDS ------------------------------------------------------------ CREATE TABLE CELL_BACKUP AS SELECT c.* FROM CELL c INNER JOIN NRCELL n ON c.CELLID = n.CELLID WHERE c.ROWID IN ( SELECT rid FROM ( SELECT c2.ROWID AS rid, ROW_NUMBER() OVER ( PARTITION BY c2.ELEMENTNODEID, c2.CELLNAME ORDER BY c2.CHANGEDATE DESC NULLS LAST ) rn FROM CELL c2 INNER JOIN NRCELL n2 ON c2.CELLID = n2.CELLID WHERE c2.ELEMENTNODEID IS NOT NULL AND c2.CELLNAME IS NOT NULL ) WHERE rn > 1 ); ------------------------------------------------------------ -- STEP 2: BACKUP CELLRADIOBANDWIDTH ------------------------------------------------------------ CREATE TABLE CELLRADIOBANDWIDTH_BACKUP AS SELECT * FROM CELLRADIOBANDWIDTH WHERE CELLID IN ( SELECT CELLID FROM CELL_BACKUP ); ------------------------------------------------------------ -- STEP 3: BACKUP NRCELL ------------------------------------------------------------ CREATE TABLE NRCELL_BACKUP AS SELECT * FROM NRCELL WHERE CELLID IN ( SELECT CELLID FROM CELL_BACKUP ); ------------------------------------------------------------ -- STEP 4: DELETE FROM CELLRADIOBANDWIDTH TABLES FIRST ------------------------------------------------------------ DELETE FROM CELLRADIOBANDWIDTH WHERE CELLID IN ( SELECT CELLID FROM CELL_BACKUP ); DELETE FROM NRCELL WHERE CELLID IN ( SELECT CELLID FROM CELL_BACKUP ); ------------------------------------------------------------ -- STEP 5: DELETE DUPLICATE CELL RECORDS ------------------------------------------------------------ DELETE FROM CELL WHERE CELLID IN ( SELECT CELLID FROM CELL_BACKUP ); ------------------------------------------------------------ -- STEP 6: COMMIT ------------------------------------------------------------ COMMIT;