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

Max-Berater

Erfahrenes Mitglied
Nein leider nicht. Ich habe schon in anderen Tabellen gesucht aber nichts wo man sagen könnte hieran matche ich die Daten
 
Zuletzt bearbeitet:

Max-Berater

Erfahrenes Mitglied
Doch hab ich versucht aber irgendwo hab ich nen Fehler drinnen. Versuche es aber weiter. Gerade bin ich über

CREATE TABLE AS SELECT​

Befehl gestolpert. Evtl. ein Ansatz?
 

Yaslaw

alter Rempler
Moderator
Mach das nicht. WIrd nur komplizierter.
Kannst du der Tabelle nicht eine ID mit einem Auto-Wert hinzufügen? Es würde alles stark vereinfachen
SQL:
ALTER TABLE `t_2124206`
    ADD COLUMN `ID` INT NOT NULL AUTO_INCREMENT,
    ADD INDEX `IDX_1` (`ID`);
Dann kannst du ein einfaches Update mit 2 Quellen durchführen. Achtung, Spaltennamen und Tabellenname sind von meinerm Test
SQL:
UPDATE
    t_2124206 t1,
    (
        SELECT
            ID,
            IFNULL(
                CASE WHEN TRIM(BELEGFELD_1)=''
                THEN NULL
                ELSE BELEGFELD_1 END,
                LAG(BELEGFELD_1, 1) over (PARTITION BY BELEGFELD_2 ORDER BY BELEGFELD_1 DESC)
            ) AS blg
        FROM
            t_2124206
    ) t2
SET t1.BELEGFELD_1 = t2.blg
WHERE t1.ID = t2.ID
;
 

Max-Berater

Erfahrenes Mitglied
Ich habe es hoffentlich so lösen können.

CREATE TABLE DATEV_table
AS ( SELECT IFNULL(CASE WHEN TRIM(t.`Belegfeld 1`)='' THEN NULL ELSE t.`Belegfeld 1` END,
LAG(t.`Belegfeld 1`, 1)
over (
-- Gruppieren über BELEGFELD_2
PARTITION BY t.`Beleginfo - Inhalt 4`
-- Absteigend sortiert BELEGFELD_1
ORDER BY t.`Belegfeld 1` DESC
)
) AS NEU_BELEGFELD_1,
t.*


FROM DATEV t);
 

Max-Berater

Erfahrenes Mitglied
Ich werde es nun morgen versuchen weiter zu verfeinern, so dass das Ergebnis so ist, wie ich es mir vorgestellt habe und berichten.

Vorab herzlichen Dank an die Community, dass Ihr mich so gut Unterstützt bei Fragen. Nochmals DANKE
 

Neue Beiträge