Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/09/2008, 10h04   #1
Membre émérite
 
Avatar de Mathusalem
 
Inscription : décembre 2003
Messages : 994
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 994
Points : 914
Points : 914
Par défaut SQL 2005 Erreur de CTE

Bonjour à tous !




petite explication de ce que j'essaie de faire :

Code :
1
2
3
4
5
6
	SELECT 
		row_number() over (partition BY t.time ORDER BY t.time ASC) AS num,  
		price
	FROM tmp_intraday_bb t
	WHERE  condition_code IS NULL
	AND ticker ='FTE FP Equity'
Citation:
1 19.31
2 19.325
3 19.32
4 19.32
5 19.32
6 19.325
7 19.325
maintenant je veux la ligne avec un numéro à 1

Citation:
1 19.31
2 19.325
3 19.32
4 19.32
5 19.32
6 19.325
7 19.325
mais si je fais :

Code :
SELECT * FROM #test where num = 1
Citation:
1 19.31
1 19.325
1 19.32
1 19.32
1 19.32
1 19.325
1 19.325

J'ai essayé aussi ça :
Code :
1
2
3
4
5
6
7
8
9
10
SELECT *
FROM (
SELECT 
	row_number() over (partition BY t.time ORDER BY t.time ASC) AS num,  
	price
FROM tmp_intraday_bb t
WHERE  condition_code IS NULL
AND ticker ='FTE FP Equity'
) t
WHERE num = 1
mais j'obtiens toujours
Citation:
1 19.31
1 19.325
1 19.32
1 19.32
1 19.32
1 19.325
1 19.325

Avec le CTE j'ai le même problème
Code :
1
2
3
4
5
6
7
8
9
10
WITH CTE AS
(
SELECT 
	row_number() over (partition BY t.time ORDER BY t.time ASC) AS num, 
	price
FROM tmp_intraday_bb t
WHERE  condition_code IS NULL
AND ticker ='FTE FP Equity'
)
SELECT * FROM CTE WHERE num = 1
et résultat :
Citation:
1 19.31
1 19.325
1 19.32
1 19.32
1 19.32
1 19.325
1 19.325
Ce qui est franchement n'importe quoi.

si je fais
Code :
1
2
3
4
5
6
7
8
9
10
WITH CTE AS
(
SELECT 
	row_number() over (partition BY  t.time, ORDER BY t.time ASC) AS num,  
	price
FROM tmp_intraday_bb t
WHERE  condition_code IS NULL
AND ticker ='FTE FP Equity'
)
SELECT * FROM CTE WHERE num BETWEEN 1 AND 3
Citation:
1 19.31
2 19.325
3 19.32
1 19.33
2 19.33
3 19.335
1 19.4

Savez-vous pourquoi il me fait ça ?


Merci !
__________________
Solidarités Nouvelles face au Chômage association loi de 1901, indépendante de tout parti politique et de toute confession religieuse.
Mathusalem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 11h17   #2
Membre émérite
 
Avatar de Mathusalem
 
Inscription : décembre 2003
Messages : 994
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 994
Points : 914
Points : 914
c'est bon j'ai trouvé, il ne fallait pas faire un partition by puis un order by sur le même champ
__________________
Solidarités Nouvelles face au Chômage association loi de 1901, indépendante de tout parti politique et de toute confession religieuse.
Mathusalem est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h38.


 
 
 
 
Partenaires

Hébergement Web