chillministrator
Goto Top

ORACLE - MERGE Abfrage mit Denkfehler?

Hallo zusammen,

habe gerade eine Abfrage eines Kollegen mit eingebauten Fehler bekommen. Leider bin ich mit SQL nicht so gut vertraut.
Auf den ersten Blick kommt es mir so vor als wäre die Abfrage doppelt gemoppelt.
Wenn hier jemand eine Hilfestellung geben kann würde ich mich sehr freuen.

LG Chilli


MERGE INTO zeitreihe d
USING ( WITH zr4901 AS
      (
      SELECT zr_mobj_id, zr_wert_a, zr_datum,
        Lead ( zr_datum ,1, SYSDATE ) OVER ( PARTITION BY zr_mobj_id ORDER BY zr_mobj_id, zr_datum ) 
        AS datum_next
        FROM zeitreihe
        WHERE zr_zrt_id=4901
        ORDER BY zr_mobj_id, zr_datum
        )
        SELECT zr4900.zr_mobj_id, zr4900.zr_datum,
          (zr4900.zr_wert_a + zr4901.zr_wert_a - BITAND ( zr4900.zr_wert_a, zr4901.zr_wert_a)) erg , 4902
          FROM zeitreihe zr4900, zr4901
          WHERE zr4900.zr_zrt_id = 4900
          AND zr4900.zr_mobj_id (+) = zr4901.zr_mobj_id
          AND (zr.4900.zr_datum > zr4901.zr_datum AND zr4900 <= zr4901.datum_next)
        ) s
ON (d.zr_mobj_id= s.zr4900.zr_mobj_id AND d.zr_datum= s4900.zr_datum AND d.zr_zrt_id = 4902)
WHEN MATCHED THEN UPDATE SET d.zr_wert_a = s.erg
WHEN NOT MATCHED THEN INSERT (d.zr_mobj_id, d.zr_datum, d.zr_wert_a, d.zr_zrt_id)
VALUES (s.zr4900.zr_mobj_id, s.zr4900.zr_datum, s.erg, 4902);

Content-Key: 317570

Url: https://administrator.de/contentid/317570

Printed on: April 19, 2024 at 21:04 o'clock

Member: LianenSchwinger
LianenSchwinger Oct 12, 2016 at 08:08:17 (UTC)
Goto Top
Hallo Chilli,

kann es sein, dass der JOIN der beiden Tabellen falsch ist?

AND zr4900.zr_mobj_id (+) = zr4900.zr_mobj_id 

G Jörg
Member: Chillministrator
Chillministrator Oct 12, 2016 at 08:19:07 (UTC)
Goto Top
Hallo Jörg,
danke für die Info. Du hast Recht, allerdings ist das mein Tipfehler.
Sorry wird korrigiert.
Member: Biber
Biber Oct 12, 2016 at 09:09:36 (UTC)
Goto Top
Moin Chillministrator,

den Tippfehler im JOIN hatte Lianenschwinger schon genannt.
Überflüssig, aber nicht schädlich ist die Zeile 9 mit dem ORDER BY, ebenso überflüssig ist die mitgeschleppte 4902 am Ende der Zeile 12.

Ansonsten solltest du mal erläutern, was denn "fehlerhaft" an dem Statement ist.
Wird nichts upgedated?
Werden zu wenig/zu viele Sätze gefunden?
Werden fachlich falsche Daten geschrieben?
Gibt es einen Syntaxfehler?

Grüße
Biber