MySQL - Wert aus vorheriger Zeile übernehmen und einfügen

Yaslaw

alter Rempler
Moderator
Ok, ohne LAG für Vrsion 5.x

Zuerst pro Gruppierung den MAX-Wert bestimmen.
SQL:
        SELECT    
           MAX(tm.BELEGFELD_1) AS DEFAULT_BF_1,
           tm.BELEGFELD_2   
        FROM     t_2124206 tm
        GROUP BY tm.BELEGFELD_2
Und diesen dann wieder mit der Quelle verknüpfen. Somit kannst du im Null-Fall auf den Wert zurückgreifen
SQL:
SELECT
    IFNULL(t.BELEGFELD_1, t_default_bf.DEFAULT_BF_1) AS NEW_BELEGFELD_1,
    t.*
FROM t_2124206 t
    INNER JOIN (
        SELECT    
           MAX(tm.BELEGFELD_1) AS DEFAULT_BF_1,
           tm.BELEGFELD_2   
        FROM     t_2124206 tm
        GROUP BY tm.BELEGFELD_2
    ) t_default_bf ON t.BELEGFELD_2 = t_default_bf.BELEGFELD_2
 

Zvoni

Erfahrenes Mitglied
Wie gesagt, denk mal über ein Upgrade nach.
Aus diversen deiner früheren Threads war der erste Lösungsansatz meist einer, welcher MySQL8.0 benötigte.

Mit MySQL5.7 mussten wir dann eher durch brennende Reifen springen, dunkle Messen abhalten, und unverständliche Beschwörungsformeln murmeln

EDIT: und siehe da: Yaslaw bestätigt es sogar.
Vergleich mal das Getöse mit der Lösung mit der LAG-Funktion
 

Max-Berater

Erfahrenes Mitglied
1645184784768.png
Das Ergebnis ist schon deutlich besser als gestern und es gibt keine Fehlermeldung mehr. Aber er setzt leider nicht die fehlenden Werte