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
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);
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 317570
Url: https://administrator.de/contentid/317570
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
3 Kommentare
Neuester Kommentar
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
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