sou novato nestas andanças,
estou com um problema numa query pl/sql que me está a deixar à beira de um ataque de nervos.
A query é a seguinte:
UPDATE BS_R3_INTEGRATION R3
SET (DEBIT, CREDIT, DEVOLUTION_AMOUNT, LAST_UPDATE_DATE, LAST_UPDATE_USER ) =
(SELECT AMOUNT_DEBIT + R3.DEBIT, AMOUNT_CREDIT + R3.CREDIT, Q.DEVOLUTION_AMOUNT + R3.DEVOLUTION_AMOUNT, SYSDATE, USER
FROM (SELECT to_date(to_char(e.date_04, 'YYYYMMDD'), 'YYYYMMDD') PAYMENT_CONFIRMATION_DATE,
E.MARKET_ID MARKET_ID,
e.number_12 OP_SAIDA,
e.number_16 OP_ENTRADA,
nvl(e.number_34,0) TRANSACTION_PAYMENT_METHOD,
(CASE
WHEN SUM(decode(e.number_22,1,e.number_23 + e.number_26,e.number_13 + e.number_17)) > 0
THEN SUM(decode(e.number_22,1,e.number_23 + e.number_26,e.number_13 + e.number_17))
ELSE 0
END
) AMOUNT_DEBIT,
(CASE
WHEN SUM(decode(e.number_22,1,e.number_23 + e.number_26,e.number_13 + e.number_17)) < 0
THEN SUM(decode(e.number_22,1,e.number_23 + e.number_26,e.number_13 + e.number_17))
ELSE 0
END
) AMOUNT_CREDIT,
SUM(DECODE(E.NUMBER_22, 1, E.NUMBER_23, E.NUMBER_13)) DEVOLUTION_AMOUNT
FROM bs_events e
WHERE e.transaction_type = 10
AND e.unique_id = e.unique_id + 0
AND e.market_id IN (1,2)
AND e.seqno = 0
-- AND e.unique_id > loLastUniqueId
-- AND e.unique_id <= loMaxUniqueId
AND e.number_07 != 9 /*BILLING_STATUS != ANULADA */
GROUP BY to_date(to_char(e.date_04, 'YYYYMMDD'), 'YYYYMMDD'),
e.market_id, e.number_12, e.number_16, nvl(e.number_34, 0)
) Q
WHERE to_date(to_char(R3.PAYMENT_CONFIRMATION_DATE, 'YYYYMMDD'), 'YYYYMMDD') = Q.PAYMENT_CONFIRMATION_DATE
AND R3.MARKET_ID = Q.MARKET_ID
AND R3.OPERATOR = Q.OP_SAIDA
AND R3.OPERATOR_1 = Q.OP_ENTRADA
AND R3.TRANSACTION_PAYMENT_METHOD = Q.TRANSACTION_PAYMENT_METHOD
);
O mesmo se passa com o campo LAST_UPDATE_USER, que apesar de estar a ser actualizado com USER também dá erro e diz que não posso actualizar este campo com NULL.
Agradecia que me ajudassem na resolução deste problema, é mesmo muito importante.
PS: Estou a usar o Oracle SQL Developer para desenvolver o meu trabalho.