J'ai écrit une requête pour identifier les enregistrements en double.Comment faire pour supprimer ces enregistrements dans Netezza (Aginity)
Comme ci-dessous.
WITH DUPS AS
(SELECT A_SURVEYID,
CAST(e_responsedate AS DATE) AS e_responsedate,
E_LG_VM_SURVEY_TYPE_ENUM
FROM TRANSIENT..INTERIM_NPS_SURVEY_MOBILE_RESULTS_20170909 a
GROUP BY A_SURVEYID,
CAST(e_responsedate AS DATE),
E_LG_VM_SURVEY_TYPE_ENUM
HAVING COUNT(*) > 1
),
RANKED AS
(SELECT R.DRS_RECORD_ID,
R.A_SURVEYID,
R.e_responsedate ,
ROW_NUMBER() OVER (PARTITION BY R.A_SURVEYID, CAST(R.e_responsedate AS DATE),
R.E_LG_VM_SURVEY_TYPE_ENUM ORDER BY SUBSTR(R.DRS_RECORD_ID, INSTR(':', R.DRS_RECORD_ID, 37) + 1, 14) DESC,
SUBSTR(R.DRS_RECORD_ID, INSTR(':', R.DRS_RECORD_ID, 32) + 1, 4) ASC) AS DR
FROM TRANSIENT..INTERIM_NPS_SURVEY_MOBILE_RESULTS_20170909 R
INNER JOIN DUPS
ON R.A_SURVEYID = DUPS.A_SURVEYID
AND CAST(R.e_responsedate AS DATE) = DUPS.e_responsedate
AND R.E_LG_VM_SURVEY_TYPE_ENUM = DUPS.E_LG_VM_SURVEY_TYPE_ENUM
)
SELECT *
FROM TRANSIENT..INTERIM_NPS_SURVEY_MOBILE_RESULTS_20170909 F
INNER JOIN RANKED
ON F.DRS_RECORD_ID = RANKED.DRS_RECORD_ID
WHERE RANKED.DR > 1
-
En utilisant le dessus de la requête je suis capable de récupérer les enregistrements (certains 6000+)..
Mais je suis incapable de supprimer ces enregistrements.
Pouvez-vous m'aider s'il vous plaît à ce sujet.
Cordialement,
Krish
J'ai essayé avec le même en ajoutant supprimer dans le qurey, mais je reçois [42000] erreur dans netezza .. – Krish
Et vous avez fait comme je l'ai écrit? La suppression avec la syntaxe JOIN est un peu plus difficile si je me souviens bien. Et quel est le texte qui accompagne '42000' Je ne me souviens pas de tous les codes d'erreur par cœur :) –