Décalage de ROW_NUMBER avec ajout d'un where
Bonjour,
J'ai un petit soucis de décalage avec la fonction ROW_NUMBER que je n'arrive pas à comprendre et résoudre :roll:
J'ai une vue me permettant de générer des courbes. J'ai besoin de numéroter les points, j'utilise donc la fonction ROW_NUMBER :
Code:
1 2
| SELECT JOUR, AGO_2011, AGO_2012, ROW_NUMBER() OVER (ORDER BY JOUR) as NUM_POINT
FROM COURBES_VOTE_AG |
Cette requête me renvoie :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| -49 NULL 0.00 1
-33 0.24 NULL 2
-32 0.98 NULL 3
-31 0.98 NULL 4
-30 0.98 NULL 5
-29 3.39 NULL 6
-28 6.09 NULL 7
-27 8.73 NULL 8
-26 11.33 NULL 9
-25 12.21 NULL 10
-24 12.21 NULL 11
-23 12.21 NULL 12
-22 12.21 NULL 13
-21 12.98 NULL 14
-20 13.94 NULL 15
-19 15.86 NULL 16
-18 16.90 NULL 17
-17 16.90 NULL 18
-16 16.90 NULL 19
-15 17.41 NULL 20
-14 17.99 NULL 21
-13 18.74 NULL 22
-12 19.48 NULL 23
-11 20.02 NULL 24
-10 20.02 NULL 25
-9 20.02 NULL 26
-8 20.36 NULL 27
-7 20.76 NULL 28
-6 21.14 NULL 29
-5 21.58 NULL 30
-4 NULL NULL 31
-3 NULL NULL 32
-2 NULL NULL 33
-1 NULL NULL 34
0 NULL NULL 35 |
Jusque là tout va bien.
Le but de la manip suivante est de récupérer les lignes où AGO_2011 est supérieur ou égal à 20. Il doit donc me renvoyer les lignes de 24 à 30.
Mais si je fais :
Code:
1 2 3 4 5
| select *
from
(SELECT JOUR, AGO_2011, AGO_2012, ROW_NUMBER() OVER (ORDER BY JOUR) as NUM_POINT
FROM COURBES_VOTE_AG)COURBES
where COURBES.AGO_2011 >= 20 |
J'obtiens de résultat avec un décalage de mon ROW_NUMBER :
Code:
1 2 3 4 5 6 7
| -11 20.02 NULL 23
-10 20.02 NULL 24
-9 20.02 NULL 25
-8 20.36 NULL 26
-7 20.76 NULL 27
-6 21.14 NULL 28
-5 21.58 NULL 29 |
C'est comme s'il recalculait le ROW_NUMBER en ne tenant pas compte de la 1ere valeur NULL de la colonne AGO_2011.
Une idée pour que la close WHERE ne modifie pas la valeur du ROW_NUMBER ? :roll:
Merci !