|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Expert Confirmé Sénior
![]() Sébastien Développeur informatique Inscription : avril 2007 Messages : 9 197 ![]() |
bonjour
sql2005 j'ai une requete qui me retourne une liste de valeurs 4 5 12 12 8 4 4 et je voudrais avoir une liste sans doublons successifs en gardant la 1ère occurrence (j'ai d'autres colonnes d'affichées, je veux le 1er changement) 4 5 12 8 4 le tout trié par un champ datetime quelqu'un a une idée de comment faire ca ? merci
__________________
si vous ne comprenez pas ce que je dis, demandez à google |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
Citation:
Citation:
|
||
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() Sébastien Développeur informatique Inscription : avril 2007 Messages : 9 197 ![]() |
lol
je viens ici parce que le problème me semble complexe, et sans vouloir t'offenser pas pour entendre group by et order by je ne veux pas grouper par valeur, 2x la même valeur je ne suis pas contre mais pas successivement je suis en train de voir si j'y arrive avec une CTE ...
__________________
si vous ne comprenez pas ce que je dis, demandez à google |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Alors expose le dans sa totalité...
comment devine-t-on la structure de tes tables ? tu parles d'un tri sur une colonne (et non pas champ) date, mais je ne vois de date nul part dans ton post. Si tu veux une réponse complète et détaillée, pose une question complète et détaillée : Structure des tables Requête que as déjà faite et éventuellement un jeu d'essai + résultat voulu |
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() Sébastien Développeur informatique Inscription : avril 2007 Messages : 9 197 ![]() |
ca me parait bien exposé, y a le contenu de la table et ce que je veux au final
on y voit des valeurs identiques mais plus successivement ... après le champ de type datetime, il a est sur la même table ca me parait aussi évident, bon certes j'ai pas dit qu'il y avait une clé table (id bigint PK clustered, dt datetime, valeur nvarchar(50)) et les colonnes c'est dans un tableau il me semble, pas dans une table de base de données
__________________
si vous ne comprenez pas ce que je dis, demandez à google |
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé Sénior
![]() Sébastien Développeur informatique Inscription : avril 2007 Messages : 9 197 ![]() |
j'ai finalement réussi
Code :
merci quand même
__________________
si vous ne comprenez pas ce que je dis, demandez à google |
||
|
|
00
|
|
|
#7 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Code sql :
|
||
|
|
00
|
|
|
#8 |
|
Expert Confirmé Sénior
![]() Sébastien Développeur informatique Inscription : avril 2007 Messages : 9 197 ![]() |
ca fait mal à la tête à comprendre pourquoi ca marche mais ta version est plus courte donc surement plus performante (edit : avec l'affichage du plan d'exécution réel sur l'exécution des 2 à la suite, la tienne fait 48% du temps donc c'est confirmé)
elle nécessite quelques modifications pour les différences avec des null comme j'ai fait et pour avoir la 1ère valeur SELECT champs FROM table WHERE NbLigne = 1 UNION ALL la_suite merci bien
__________________
si vous ne comprenez pas ce que je dis, demandez à google |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
En effet pour la premiere valeur
C'est quand j'ai recopié et adapté la requete que la première valeur a sauté mais plutot qu'un UNION, il suffit de rajouter a la fin de la requete |
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() Sébastien Développeur informatique Inscription : avril 2007 Messages : 9 197 ![]() |
oui, c'est même surement un bug d'avoir mis union pour les cas où la 1ère ligne ne vaudrait pas null
m'enfin avec le or ct2.val is null ca me retourne des nulls consécutifs donc j'ai mis ca à la place : OR (v1.Valeur IS NULL AND v2.Valeur IS NULL AND v2.NbLigne = 1) et la différence de performance passe à 61/39
__________________
si vous ne comprenez pas ce que je dis, demandez à google |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Vous avez des NULL dans votre table initiale ???
|
|
|
00
|
|
|
#12 |
|
Expert Confirmé Sénior
![]() Sébastien Développeur informatique Inscription : avril 2007 Messages : 9 197 ![]() |
c'est vrai que je ne l'ai pas mentionné ça
en fait c'est un code générique pour différentes tables et différents champs, donc j'ai été obligé d'expliquer la fonction générique et dans mon cas de test j'avais null null null 12 5 12 12 5 null 12 4, c'est pour ca que j'ai remarqué que ca n'allait pas
__________________
si vous ne comprenez pas ce que je dis, demandez à google |
|
|
00
|
|
|
#13 | ||
![]() ![]() |
Une autre solution :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#14 |
|
Expert Confirmé Sénior
![]() Sébastien Développeur informatique Inscription : avril 2007 Messages : 9 197 ![]() |
légèrement plus rapide encore oui
je ne connais le partition BY, je vais regarder ce que ca fait toutes mes excuses à vous deux, même http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L2 vous donne raison ... en tout cas merci bien pour les différentes syntaxes
__________________
si vous ne comprenez pas ce que je dis, demandez à google |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com