таблица creditNote
id invoice_id generated_at(timestamp) status
10101 111 2018-02-28 14:42:39.247 generated
23982 111 2018-03-30 11:11:11.247 generated
таблица paymentModeAmount
id invoice_id paid_on(timestamp) payment_mode
98236 111 creditNote
63725 111 creditNote
После выполнения нижеследующего запроса OUTPUT составляет
таблица paymentModeAmount
id invoice_id paid_on(timestamp) payment_mode
98236 111 2018-02-28 14:42:39.247 creditNote
63725 111 2018-02-28 14:42:39.247 creditNote
ЗдесьСтолбец PaidOn содержит те же данные, но нам нужно получить две разные временные метки
Ожидаемые
id invoice_id paid_on(timestamp) payment_mode
98236 111 2018-02-28 14:42:39.247 creditNote
63725 111 2018-03-30 11:11:11.247 creditNote
метки оплачиваемого времени должны отличаться, как и ожидалось
Функция PL / SQL
CREATE OR REPLACE FUNCTION updatePaidOn()
RETURNS TABLE(
invoiceid BIGINT,
generatedat TIMESTAMP)
AS $$
BEGIN
RETURN QUERY SELECT
generated_invoice_id as invoiceid, generated_at as generatedat
FROM
credit_note
WHERE
status='generated';
END; $$
LANGUAGE 'plpgsql';
Выполнить приведенную ниже функцию
UPDATE payment_mode_amount pm
SET paid_on = sq.generatedat
from updatePaidOn() as sq
where pm.invoice_id = sq.invoiceid
and pm.paid_on is null
and pm.payment_mode='creditNote';