Ниже приведены таблицы
EVENT table
event_id | gross_amount | transaction_id
1 | 10 | 1
2 | 12 | 5
TRANSACTION table
trx_id | debit | credit | type | original_trx_id | last_updated
1 | 0 | 0 | payment | null | 25-JUL-11
2 | 0 | 2 | settlement | 1 | 26-JUL-11
3 | 0 | 1 | settlement | 1 | 27-JUL-11
4 | 3 | 0 | settlement | 1 | 28-JUL-11
5 | 0 | 0 | payment | null | 24-JUL-11
6 | 0 | 3 | settlement | 5 | 25-JUL-11
RESULT EXPECTED:
trx_id | debit | credit | current_gross | current_net
2 | 0 | 2 | 10 | 12
3 | 0 | 1 | 12 | 13
4 | 3 | 0 | 12 | 9
6 | 0 | 3 | 10 | 13
Пояснение
Транзакция 1,2,3,4 попадает в один набор, а транзакция 5,6 попадает в другой набор.Каждый набор транзакций можно заказать с использованием последнего обновленного столбца.
Для расчета мы не берем тип транзакции «оплата».Транзакция «платеж» связана с таблицей событий.Откуда можно найти "original_gorss_amount" для расчета.
Шаги
- Найти таблицу транзакций платежной транзакции из таблицы транзакций.(Пример: транзакция_ид = 1, также из этого мы можем найти original_gross_amount = 10)
- Взять все транзакции "урегулирования", для которых original_trx_id = 1
- Заказать их на основе времени последнего обновления.
- Примените расчет
Надеюсь, вы поняли мой вопрос.Я хочу как-то получить «ОЖИДАЕМЫЙ РЕЗУЛЬТАТ», используя PL SQL (Пожалуйста, не настраивайте функцию)
Я не могу придумать, как применить CONNECT BY здесь.Мы очень ценим вашу помощь.
Ниже вы найдете таблицу и вставьте операторы.
create table event
(event_id number(9),
gross_amount number(9),
transaction_id number(9) );
insert into event values (1,10,1);
insert into event values (2,10,5);
create table transaction
(trx_id number(9),
debit number(9),
credit number(9),
type varchar2(50),
original_trx_id number(9),
last_updated DATE
);
insert into transaction values (1,0,0,'payment',null,'2011-07-25');
insert into transaction values (2,0,2,'settlement',1,'2011-07-26');
insert into transaction values (3,0,1,'settlement',1,'2011-07-27');
insert into transaction values (4,3,0,'settlement',1,'2011-07-28');
insert into transaction values (5,0,0,'payment',null,'2011-07-24');
insert into transaction values (6,0,3,'settlement',5,'2011-07-25');