Soyez le premier à donner votre avis sur cette source.
Snippet vu 52 687 fois - Téléchargée 18 fois
DELETE FROM My_Table WHERE ROWID IN ( SELECT ROWID FROM ( SELECT ROWID, ROW_NUMBER ( ) OVER ( PARTITION BY col1 || col2 ORDER BY col1 || col2 ) num_ligne FROM My_Table ) t2 WHERE num_ligne > 1 );
17 juin 2019 à 12:19
19 déc. 2012 à 11:14
je suit désolé pour le retard ,
avant tout tu doit voir si la partie PARTITION est correct cad
select id_pere||date_debut||id_fils||date_fin
FROM tmp t
WHERE ....
ORDER BY id_pere , date_debut , id_fils, date_fin;
pour voir la concaténation
de plus avec un champ date je vous conseil de toujours le formaté
voici ton requête :
SELECT t2.*
FROM (SELECT t.*
, Rowid
, Row_Number( )
OVER ( PARTITION BY id_pere || to_char(date_debut,'yyyymmddHH24miss') || id_fils || to_char(date_fin,'yyyymmddHH24miss')
ORDER BY
id_pere
, date_debut
, id_fils
, date_fin )
num_ligne
FROM tmp t WHERE id_pere 1130451 AND id_fils 1084944 AND date_debut >= '01/05/2012' AND date_debut < '01/06/2012') t2
9 oct. 2012 à 11:55
11 juil. 2012 à 09:39
11 juil. 2012 à 09:28
Ca ne fonctionne pas chez moi, j'ai 4 champs qui me sert de clé dont 2 qui sont des dates. Pour une ligne qui n'est pas en doublon, la requete remonte un num_ligne = 2 donc cette ligne serait supprimée à tord.
select t2.* from (select t.*, rowid, row_number () over (partition by id_pere||date_debut||id_fils||date_fin order by id_pere, date_debut, id_fils, date_fin) num_ligne from tmp twhere id_pere 1130451 and id_fils 1084944 and date_debut >= '01/05/2012' and date_debut < '01/06/2012'
) t2
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.