Comment obtenir une valeur de la ligne de résultat précédente d'une instruction SELECTCOMMENT CHOISIR LA VALEUR DE LA RANGÉE PRÉCÉDENTE?
Si nous avons une table appelée cardevent et a des lignes [ID (int), Value (Money)] et nous avons quelques lignes dedans, par exemple
ID --Value
1------70
1------90
2------100
2------150
2------300
3------150
3------200
3-----250
3-----280
ainsi de suite ...
Comment faire une requête qui recevez chaque ID de ligne, la valeur et la valeur précédente de la ligne dans laquelle les données apparaissent comme suit
ID --- Value ---Prev_Value
1 ----- 70 ---------- 0
1 ----- 90 ---------- 70
2 ----- 100 -------- 90
2 ------150 -------- 100
2 ------300 -------- 150
3 ----- 150 -------- 300
3 ----- 200 -------- 150
3 ---- 250 -------- 200
3 ---- 280 -------- 250
ainsi de suite.
i faire la requête suivante, mais il est si mauvais dans la performance en énorme quantité de données
SELECT cardevent.ID, cardevent.Value,
(SELECT F1.Value
FROM cardevent as F1
where F1.ID = (SELECT Max(F2.ID)
FROM cardevent as F2
WHERE F2.ID < cardevent.ID)
) AS Prev_Value
FROM cardevent
Alors quelqu'un peut me aider à obtenir la meilleure solution pour un tel problème?
pourquoi avez-vous marqués avec 2 différents SGBDR? –
Dupliquer vers celui-ci (autre utilisateur, autre nom de table): http://stackoverflow.com/questions/742226/how-to-get-a-value-from-previous-result-row-of-a-select- déclaration – MicSim
doit être une question de devoirs .... –