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 :

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
Cette requête me renvoie :
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
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 : 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
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
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 ?

Merci !