In questi giorni mi è capitato di dover leggere il contenuto della riga precedente in una tabella.
Ipotizziamo che abbiate bisogno di valorizzare una colonna partendo dal valore della riga precedente.
Alcuni potrebbero dire, semplicemente, di fare una query annidata per ri-calcolare il valore di quella colonna fino alla riga precedente.
Quella appena descritta potrebbe essere una soluzione corretta, ma è preferibile utilizzare quanto segue :
La funzione LAG legge la riga precedente :
SELECT BusinessEntityID, YEAR(QuotaDate) AS SalesYear, SalesQuota AS CurrentQuota,
LAG(SalesQuota, 1,0) OVER (ORDER BY YEAR(QuotaDate)) AS PreviousQuota
FROM Sales.SalesPersonQuotaHistory
WHERE BusinessEntityID = 275 and YEAR(QuotaDate) IN ('2005','2006');
Spero di esservi stato utile.
Buon Web a tutti