Bonjour,
je voudrais savoir s'il est possible de faire une boucle FOR dans une procedure stockée sous SQLServer 2008, si oui je vous pris de me donner un exemple, Merci.
Bonjour,
je voudrais savoir s'il est possible de faire une boucle FOR dans une procedure stockée sous SQLServer 2008, si oui je vous pris de me donner un exemple, Merci.
Pas de FOR, mais du WHILE (qui peut simuler du FOR) !
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Merci,
En fait je voudrais faire un traitement un peu comliqué, j'ai pu le faire en VB.Net, et j'aimerais le refaire dans une procedure stockée.
voila un exemple:
Ticker MarketCap Date
A 120000 2011-09-22
A 230000 2011-09-24
A 677000 2011-09-25
dans une fenetre j'ai une liste des tickers (dans une chekedlistbox), l'utilisateur a le droit de cocher le nombre de ticker qu'il souhaite.
le principe c'est de calculer la performance de chaque ticker.
Pour le premier enregistrement doit tjrs affecter 1
dans les autres lignes il faut calculer la division de la ligne /la ligne -1.
Le resultat sera:
Date Perf
2011-09-22 1
2011-09-24 230000/120000
2011-09-25 677000/230000.
Sans Boucle comment faire, Merci
En utilisant une fonction de fenêtrage dans une simple requête SQL, par exemple.
Démo :
Jeu d'essais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 USE tempdb; GO
La requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE TABLE MA_TABLE (Ticker CHAR(1), MarketCap FLOAT, MaDate DATE); INSERT INTO MA_TABLE VALUES ('A', 120000, '2011-09-22'), ('A', 230000, '2011-09-24'), ('A', 677000, '2011-09-25');
1) appeler une colonne "DATE" est franchement stupide. C'est un mot clef réservé de SQL et ne peut que vous conduire à des ennuis !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 WITH T AS (SELECT *, ROW_NUMBER() OVER(PARTITION BY Ticker ORDER BY MaDate DESC) AS N FROM MA_TABLE) SELECT T1.Ticker, T1.MaDate, T1.MarketCap / COALESCE(T2.MarketCap, T1.MarketCap) FROM T AS T1 LEFT OUTER JOIN T AS T2 ON T1.Ticker = T2.Ticker AND T1.N = T2.N - 1 ORDER BY 1, 2
2) pour apprendre SQL, rien ne vaut mon site ou mon livre.
En particulier :
a) sur les CTE (WITH) : http://sqlpro.developpez.com/cours/s...te-recursives/
b) sur les fonctions de fenêtrage : http://sqlpro.developpez.com/article...clause-window/
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
SQL Pro...
On sent bien là le prof(ce n'est pas péjoratif, loin de là)
Je pense que sihammaster est un dev .net qui doit faire du SQL (comme beaucoup maintenant dans la vie courante) et que si tu commences à lui faire apprendre les cubes pour la seule requête complexe qu'il aura a écrire c'est un peu lourd; D'autant plus que si d'autres dev de sa boîte tombent sur un cube je pense qu'ils feront la même tête qu'une poule qui trouve une fourchette
Je pense qu'un petit curseur serait plus simple a comprendre.
Ou il faudrait que MS fasse des syntaxes simples du type Start With d'Oracle.
Bonne journée
PS: Avant que tu sautes sur ton fauteuil, je sais que la syntaxe d'Oracle n'est pas du SQL, mais il nous faut vivre avec notre temps; c'est finit les DBA études qui ne faisaient que de l'"optimisation"....
Bonjour,
Merci infiniment ca marche nickel!!!!!, vraiment vous etes le MASTER SQLPRO.
Merci bcp serge0934 tu m'a bien compris, je trouve le code .Net plus facile que les requetes complexes parce que je travaill bcp sur le code que sur les requetes.
Merci encore![]()
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Partager