Pozdrav,
nisam siguran da sam bas razumeo zasto u naslovu posta stoji UPDATE statement, kada ti zelis samo da procitas tabelu sa zaduzenjima, sa osvrtom na sve uplate...
Anyway, evo jednog resenja - nadam se da u sebi nema gresaka, za to, nazalost, zbog vremena ne mogu da garantujem, ali mozes sam to da proveris. U svakom slucaju resenje je barem putokaz kako se ovaj problem moze resiti bez primene kursora.
Code:
;
WITH cte AS
(
SELECT id, datum, iznosDuga,
(SELECT SUM(iznosDuga) FROM #prva pr2 WHERE pr1.id = pr2.id AND pr1.datum >= pr2.datum) iznosDugaAccumulated,
(SELECT ISNULL(SUM(ukupnoUplatio),0) FROM #druga dr WHERE dr.id=pr1.id) Uplatio
FROM #prva pr1
)
SELECT id, datum,
CASE WHEN iznosDugaAccumulated<=Uplatio
THEN 0
ELSE
CASE WHEN iznosDugaAccumulated - Uplatio > iznosDuga
THEN iznosDuga
ELSE iznosDugaAccumulated - Uplatio
END
END OstatakDugovanja
FROM cte
Sto se tice performansi, uz ovo resenje podrazumevajuci su cluster indeksi na id polju, te noncludtered index na poljima id, datum u prvoj tabeli.
Pozdrav,
Sad šta je tu je. A možda će da dođe i ova tvoja tetka iz Bosanske Krupe.