yo,
Ist es nicht möglich, in einem Subselect auf die Werte des äußeren Selects zuzugreifen?
das ist sehr wohl möglich und hört auf den klangvollen namen korrelierende abfragen.
SELECT blub1, innen.blub2
FROM tabelle1 aussen,
(SELECT blub2
FROM tabelle2
WHERE blub3 = aussen.blub1) innen
grundsätzlich solltest du vor jedem spaltennamen in einer korrelierende abfrage auch den aliasnamen einsetzen, falls es sich um tabellen gleichen names handelt. ansonsten würde auch der tabellenname gehen. es ersparrt einen die suche, welche spaltennamen nun eindeutig sind und erleichtert auch das lesen der abfrage. das problem würde ich anders angehen.
SELECT tab1.jahr, tab1.wert,
(SELECT MAX(wert) FROM tabelle tab2 WHERE tab1.jahr - 1 = tab2.jahr)
FROM tabelle tab1
dann hast du schon mal den wert des jahres davor. und da ich im prozentrechnen immer nicht aufgepasst habe, kannst du sicherlich den rest machen. die MAX-funktion dient nur zur sicherheit, damit nur maximal ein wert geliefert wird. eventuell musst du dir noch eine behandelung für das erste vorkommende hajr ausdenken, denn das hat ja keinen vorgänger.
Ilja