Bonjour,
J'ai un petit soucis de décalage avec la fonction ROW_NUMBER que je n'arrive pas à comprendre et résoudre
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 :
Cette requête me renvoie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT JOUR, AGO_2011, AGO_2012, ROW_NUMBER() OVER (ORDER BY JOUR) as NUM_POINT FROM COURBES_VOTE_AG
Jusque là tout va bien.
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
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
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 :
J'obtiens de résultat avec un décalage de mon ROW_NUMBER :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
C'est comme s'il recalculait le ROW_NUMBER en ne tenant pas compte de la 1ere valeur NULL de la colonne AGO_2011.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Une idée pour que la close WHERE ne modifie pas la valeur du ROW_NUMBER ?
Merci !
Partager