Ich hänge bei dieser Abfrage fest. Ich brauche Hilfe.
-- ORACLE ---
MERGE INTO test.CUSTOMER UPC
USING (SELECT CUST_NO,
CUST_HIGH_PAYOR_NO,
CUST_PAYOR_POS,
CUST_PAYOR_SUBS,
TIMESTAMP,
LEVEL LVL,
(SELECT MAX(LEVEL)
FROM test.CUSTOMER
START WITH CUST_NO = CUST_NO
CONNECT BY PRIOR CUST_PAYOR_NO = CUST_NO) MXLVL,
(SELECT CUST_NO
FROM test.CUSTOMER
WHERE CONNECT_BY_ISLEAF = 1
START WITH CUST_NO = CUST_NO
CONNECT BY PRIOR CUST_PAYOR_NO = CUST_NO) HIGHPAYOR
FROM test.CUSTOMER
START WITH CUST_NO = CUST_NO
CONNECT BY PRIOR CUST_PAYOR_NO = CUST_NO) A
ON (UPC.CUST_NO = A.CUST_NO)
WHEN MATCHED THEN
UPDATE
SET
CUST_PAYOR_SUBS = (SELECT COUNT(*) - 1
FROM test.CUSTOMER
START WITH CUST_NO =
UPC.CUST_NO
CONNECT BY PRIOR CUST_NO =
CUST_PAYOR_NO),
CUST_PAYOR_POS = A.MXLVL - A.LVL,
CUST_HIGH_PAYOR_NO = A.HIGHPAYOR,
TIMESTAMP = SYSDATE;
----POSTGRESQL:
UPDATE GCARS.CUSTOMER UPC
SET
CUST_CORP_SUBS_717 = (WITH RECURSIVE CTE_CONNECT_BY AS (
SELECT 1 AS LEVEL, S.* FROM GCARS.CUSTOMER S WHERE CUST_NO_717 =
UPC.CUST_NO_717
UNION ALL
SELECT LEVEL + 1 AS LEVEL, S.* FROM CTE_CONNECT_BY R INNER JOIN GCARS.CUSTOMER S ON r.CUST_NO_717 =
s.CUST_PARENT_NO_717
)
SELECT COUNT(*) - 1
FROM CTE_CONNECT_BY
),
CUST_CORP_POS_717 = A.MXLVL - A.LVL,
CUST_HIGH_PARENT_NO_717 = HIGHPARENT,
TIMESTAMP = CURRENT_TIMESTAMP:TIMESTAMP(0)
FROM
(SELECT CUST_NO,
CUST_HIGH_PAYOR_NO,
CUST_PAYOR_POS,
CUST_PAYOR_SUBS,
TIMESTAMP,
LEVEL LVL,
(WITH RECURSIVE CTE_CONNECT_BY AS (
SELECT 1 AS LEVEL, S.* FROM TEST.CUSTOMER S WHERE CUST_NO_717 = CUST_NO
UNION ALL
SELECT LEVEL + 1 AS LEVEL, S.* FROM CTE_CONNECT_BY R INNER JOIN TEST.CUSTOMER S ON r.CUST_PARENT_NO = s.CUST_NO
)
SELECT MAX(LEVEL)
FROM CTE_CONNECT_BY
) AS MXLVL,
Entschuldigung für die Markierung. Wenn Sie dabei helfen können, dann wird mich das entlasten.
Die Postgres Version verwendet andere Feldnamen im Update Teil als Oracle.
Was hat das zu bedeuten? Statements vertauscht?
Und wie stellst Du Dir die Beantwortung dieser “Frage” vor? Ist es überhaupt eine Frage?
Niemand kennt das Datenmodell, niemand kennt deine Daten. Du brauchst Hilfe, ja, das brauchen alle hier. Wie sieht es z.B. mit Fehlermeldungen aus? Gibt es keine?
Wenn Du Dir mal Foren wie Stackoverflow anschaust, dann wirst Du feststellen, dort liefert man ein durchgängiges Stück Code mit einer Fehlermeldung, falschem Ergebnis und gewünschtem, einer konkreten Frage usw.
Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.