- sellerbuyer: ScreenX technológia élmények az Arénában
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- GoodSpeed: Megint 3 hónap Disney+ akciósan :)
- btz: Internet fejlesztés országosan!
- sh4d0w: Tele a hócipőm
- sziku69: Szólánc.
- Argos: Az vagy, amit megeszel
- bitblueduck: RTX 50-es széria PhysX támogatás nélkül. Tényleg akkora probléma?
- moongoose: Jelszóvédett IBM Thinkpad R50e működőképessé tétele.
Új hozzászólás Aktív témák
-
nyunyu
félisten
válasz
Apollo17hu #5214 üzenetére
Az a baj, hogy az előző lépésben számolt értékre van szükséged a következő kiszámolásához, és nem szimplán szummázod a korábbi értékeket.
Így vagy rekurzívan számolod ki, vagy ciklust írsz rá.
Ezekre nem nagyon van szabvány szintaxis, kb. minden DBnek más megoldása van rá.
Oracle alatt valahogy így nézne ki a ciklusos megoldás:
DECLARE
v_id varchar2(10);
v_ertek number;
v_korr_ertek number := 0;
CURSOR c is
SELECT id, ertek
FROM proba
ORDER BY id;
BEGIN
OPEN c;
LOOP
FETCH c INTO v_id, v_ertek;
EXIT WHEN c%notfound;
v_korr_ertek := CASE WHEN v_korr_ertek + v_ertek > 0
THEN 0
ELSE v_korr_ertek + v_ertek
END;
dbms_output.put_line(v_id || ',' || v_ertek || ',' || v_korr_ertek);
/*
UPDATE proba
SET korr_ertek = v_korr_ertek
WHERE id = v_id;
*/
END LOOP;
CLOSE c;
END;Deklarálsz egy kurzort, amiben azonosító szerint növekvő sorrendben jönnek a rekordok, aztán azon egyesével végig mész, kiszámolva az aktuális korrigált értéket.
Új hozzászólás Aktív témák
- Samsung Galaxy A32 128GB Kártyafüggetlen 1 év Garanciával
- Huawei P20 Lite 64GB, Kártyafüggetlen, 1 Év Garanciával
- GYÖNYÖRŰ iPhone 13 mini 128GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3324
- GYÖNYÖRŰ iPhone 12 Pro Max 256GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS2116, 100% Akkumulátor
- Gamer PC-Számítógép! Csere-Beszámítás! I5 10500T / RTX 3050 / 32GB DDR4 / 512 SSD!
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest