Bonjour à tous,

j'ai des doublons dans une table D_FUNCTION, et je souhaite les éliminer afin qu'il ne reste qu'un exemplaire de chaque ligne.

Ma requète utilise pour cela une table temporaire T_DOUBLON_TEMP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT DISTINCT ( NAME_FUNCTION, CREATE_DATE, UPDATE_DATE, LOGIN_USER, LOGIN_USER_UPDATE )
INTO   T_DOUBLON_TEMP
FROM   D_FUNCTION
GROUP  BY NAME_FUNCTION, CREATE_DATE, UPDATE_DATE, LOGIN_USER, LOGIN_USER_UPDATE
HAVING COUNT(*) > 1;
 
DELETE
FROM D_FUNCTION d 
WHERE EXISTS( SELECT * FROM D_FUNCTION d2
WHERE d.NAME_FUNCTION = d2.NAME_FUNCTION 
AND d.CREATE_DATE = d2.CREATE_DATE 
AND d.UPDATE_DATE = d2.UPDATE_DATE 
AND d.LOGIN_USER = d2.LOGIN_USER 
AND d.LOGIN_USER_UPDATE = d2.LOGIN_USER_UPDATE 
GROUP  BY NAME_FUNCTION,CREATE_DATE,UPDATE_DATE,LOGIN_USER,LOGIN_USER_UPDATE
      HAVING COUNT(*) > 1);
 
INSERT INTO D_FUNCTION
SELECT NAME_FUNCTION,CREATE_DATE,UPDATE_DATE,LOGIN_USER,LOGIN_USER_UPDATE
FROM   T_DOUBLON_TEMP;
 
DROP TABLE T_DOUBLON_TMP;
Mon code semble pourtant bon, mais j'obtiens les erreurs suivantes :
Erreur commençant à la ligne 1 de la commande :
SELECT DISTINCT NAME_FUNCTION, CREATE_DATE, UPDATE_DATE, LOGIN_USER, LOGIN_USER_UPDATE
INTO T_DOUBLON_TEMP
FROM D_FUNCTION
GROUP BY NAME_FUNCTION, CREATE_DATE, UPDATE_DATE, LOGIN_USER, LOGIN_USER_UPDATE
HAVING COUNT(*) > 1
Erreur à la ligne de commande : 2, colonne : 7
Rapport d'erreur :
Erreur SQL : ORA-00905: missing keyword
00905. 00000 - "missing keyword"
*Cause:
*Action:
0 rows deleted

Erreur commençant à la ligne 18 de la commande :
INSERT INTO D_FUNCTION
SELECT NAME_FUNCTION,CREATE_DATE,UPDATE_DATE,LOGIN_USER,LOGIN_USER_UPDATE
FROM T_DOUBLON_TEMP
Erreur à la ligne de commande : 20, colonne : 7
Rapport d'erreur :
Erreur SQL : ORA-00942: table or view does not exist
00942. 00000 - "table or view does not exist"
*Cause:
*Action:

Erreur commençant à la ligne 22 de la commande :
DROP TABLE T_DOUBLON_TEMP
Rapport d'erreur :
Erreur SQL : ORA-00942: table or view does not exist
00942. 00000 - "table or view does not exist"
*Cause:
*Action:
Je ne comprend pas, j'ai revérifier ma syntaxe avec mes sources (livre et cours) et je ne vois pas ce qu'il manque...

Quelqu'un aurait-il une idée ?

D'avance merci