-- -- $Id$ -- -- Dubbele actieve ins_deelsrtcontrole records verwijderen. DEFINE thisfile = 'PLAT#54019.sql' DEFINE dbuser = '^WOMA' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; WHENEVER SQLERROR EXIT; SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL; WHENEVER SQLERROR CONTINUE; SPOOL &fcltlogfile SET DEFINE OFF ------ payload begin ------ -- Record verwijderen die de aiai veroorzaakt. -- Er zijn twee ingeplande inspecties voor dezelfde taak. Van deze twee inspecties de inspectie met de laagste ins_deelsrtcontrole_key verwijderen. -- ins_deel_key IN (5924) DELETE FROM ins_deelsrtcontrole WHERE ins_deelsrtcontrole_key IN (SELECT min_idsc FROM ( SELECT idsc.ins_deel_key, COUNT(idsc.ins_deelsrtcontrole_key) aantal, MIN(idsc.ins_deelsrtcontrole_key) min_idsc, MAX(idsc.ins_deelsrtcontrole_key) max_idsc FROM ins_deelsrtcontrole idsc WHERE idsc.ins_deelsrtcontrole_status IN (0) AND idsc.ins_scenario_key = 1 GROUP BY idsc.ins_deel_key) WHERE aantal = 2); -- Nu de records verwijderen die door het verschuiven van het bedrag ook de foutmelding kunnen veroorzaken. -- Verwijderen van de ingeplande inspecties als er na deze ingeplande inspectie nog een geaccordeerde inspecties is met een grotere ins_deelsrtcontrole_key key. -- Deze situatie mag niet voorkomen. -- 66 stuks DELETE FROM ins_deelsrtcontrole WHERE ins_deelsrtcontrole_key IN (SELECT min_idsckey FROM (SELECT ins_deel_key, aantal, min_idsckey, max_idsckey, (SELECT idsc2.ins_deelsrtcontrole_status FROM ins_deelsrtcontrole idsc2 WHERE idsc2.ins_deelsrtcontrole_key = min_idsckey) eerste_status, (SELECT idsc2.ins_deelsrtcontrole_status FROM ins_deelsrtcontrole idsc2 WHERE idsc2.ins_deelsrtcontrole_key = max_idsckey) laatste_status FROM ( SELECT idsc.ins_deel_key, COUNT(idsc.ins_deelsrtcontrole_key) aantal, MAX(idsc.ins_deelsrtcontrole_key) max_idsckey, MIN(idsc.ins_deelsrtcontrole_key) min_idsckey FROM ins_deelsrtcontrole idsc WHERE idsc.ins_deelsrtcontrole_status IN (0, 2) AND idsc.ins_scenario_key = 1 GROUP BY idsc.ins_deel_key) WHERE aantal > 1) WHERE aantal = 2 AND eerste_status = 0 AND laatste_status = 2); -- Verwijderen van de ingeplande inspecties als er na deze ingeplande inspectie nog een voltooide inspecties is met een grotere ins_deelsrtcontrole_key key. -- Deze situatie mag niet voorkomen. -- ins_deel_key IN (497, 501, 677, 1776, 1974, 2000 ,4032, 5943, 6361, 6381) DELETE FROM ins_deelsrtcontrole WHERE ins_deelsrtcontrole_key IN (SELECT (SELECT ins_deelsrtcontrole_key FROM ins_deelsrtcontrole idsc2 WHERE idsc2.ins_deel_key = xx.ins_deel_key AND idsc2.ins_srtcontrole_key = xx.ins_srtcontrole_key AND idsc2.ins_scenario_key = 1 AND idsc2.ins_deelsrtcontrole_status = 0) ins_deelsrtcontrole_key0 FROM (SELECT ins_deel_key, ins_srtcontrole_key, aantal, min_idsckey, max_idsckey, (SELECT idsc2.ins_deelsrtcontrole_status FROM ins_deelsrtcontrole idsc2 WHERE idsc2.ins_deelsrtcontrole_key = min_idsckey) eerste_status, (SELECT idsc2.ins_deelsrtcontrole_status FROM ins_deelsrtcontrole idsc2 WHERE idsc2.ins_deelsrtcontrole_key = max_idsckey) laatste_status FROM ( SELECT idsc.ins_deel_key, ins_srtcontrole_key, COUNT(idsc.ins_deelsrtcontrole_key) aantal, MAX(idsc.ins_deelsrtcontrole_key) max_idsckey, MIN(idsc.ins_deelsrtcontrole_key) min_idsckey FROM ins_deelsrtcontrole idsc WHERE idsc.ins_deelsrtcontrole_status IN (0, 6) AND idsc.ins_scenario_key = 1 GROUP BY idsc.ins_deel_key, ins_srtcontrole_key) WHERE aantal > 1) xx WHERE xx.aantal >= 2 AND EXISTS (SELECT ins_deelsrtcontrole_key FROM ins_deelsrtcontrole idsc2 WHERE idsc2.ins_deel_key = xx.ins_deel_key AND idsc2.ins_srtcontrole_key = xx.ins_srtcontrole_key AND idsc2.ins_scenario_key = 1 AND idsc2.ins_deelsrtcontrole_status = 0) AND xx.laatste_status = 6); ------ payload end ------ SET DEFINE OFF BEGIN adm.systrackscriptId ('$Id$', 1); END; / COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile