0 votes

SQL Server 2005 : Trouver / accéder à la valeur de (currentrow-N) et implémenter une formule ?

J'ai une table avec quatre colonnes (Année, Mois, Nom & Valeur)

Je veux ajouter une autre colonne (nouvelle_valeur) qui est calculée selon la formule suivante

NOUVELLE_VALEUR = (VALEUR du Mois actuel/VALEUR du (Mois actuel-4))^1/3

Exemple

Année   Mois    NOM VALEUR  NOUVELLE_VALEUR 
2008      01     A      4.412       ?
2008      02     B      4.941
2008      03     C      4.815
2008      04     D      4.246
2008      05     E      4.100
2008      06     F      4.490
2008      07     G      4.465
2008      08     H      4.636
2008      09     I      4.045
2008      10     J      5.543
2008      11     K      5.722
2008      12     L      5.326

par exemple: Pour le mois 08

NOUVELLE VALEUR = (4.636/4.246)^1/3

Ignorer le calcul pour les quatre premiers mois

Comment obtenir la valeur du 'Mois actuel-4' de manière programmatique en SQL ?

Merci

1voto

Tetraneutron Points 8494

Il suffit de joindre la table à elle-même sur le mois (et éventuellement d'autres colonnes, je ne connais pas vos données)

select TB.Name, TB.Month, (TB.Value / TA.Value) ^ 1/3 -- Ce calcul ne fonctionnera pas, mais vos paramètres sont là
from YourTable TA
join YourTable TB
on TA.Month = TB.Month - 4

1voto

richardtallent Points 17534

Similaire à @Tetraneutron:

SELECT tb.Nom, tb.Valeur, POWER(tb.valeur / ta.valeur, .3333) AS NouvelleValeur
FROM
    votretable ta,
    votretable tb
WHERE
    (tb.mois>4 AND ta.mois=tb.mois-4 AND tb.annee=ta.annee)
    OR (tb.mois<=4 AND ta.mois=(8+tb.mois) AND tb.annee=(ta.annee+1))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X