Ma méthode actuelle de dé-duper est vraiment bête.Comment puis-je sélectionner seulement 1 enregistrement par identifiant utilisateur en utilisant ROW_NUMBER sans sous-requête?
select col1, col2 ... col500 from
(select col1, col2 ... col500, ROW_NUMBER() OVER(PARTITION BY uid) as row_num)
where row_num=1;
Existe-t-il un moyen de le faire sans sous-requête? Select distinct n'est pas une option car il peut y avoir de petites variations dans les colonnes qui ne sont pas significatives pour cette sortie.
Quel est le problème avec la sous-requête? Cela ressemble à une requête parfaite pour moi. –
Les fonctions de fenêtre sont restituées après la requête, dans votre exemple, d'abord elle exécute le 'SELECT col1, col2 ... FROM ...' puis elle exécute la fonction de la fenêtre row_number ** OVER ** les résultats de la requête. C'est pourquoi vous utilisez une sous-requête pour obtenir des doublons. Ce n'est pas bête, c'est ce que c'est, et c'est l'une des meilleures façons de résoudre ce genre de requête. Sinon, vous devrez écrire un PL pour cela. – Dan
Oh bien. J'ai tellement de colonnes que les répéter deux fois est maladroit. Merci pour vos commentaires Juan, Dan – ForeverConfused