Ваша проблема в том, что вы перепутали ACCOUNT_TYPE
и TRANSACTION_TYPE
в своей таблице ACCOUNT_TRANSACTIONS - вы помещаете типы транзакций (кредитные, дебетовые) в поле ACCOUNT_TYPE
, и вы вводите типы счетов (клиент и т. Д.)) в поле TRANSACTION_TYPE
.
Если вы переключите поля ACCOUNT_TYPE и TRANSACTION_TYPE в определении таблицы, вы получите:
create table account_transactions
(customer_number varchar2(10),
transaction_type varchar2(10),
account_type varchar2(10),
amount number);
insert into account_transactions values('5555','credit','customer',10);
insert into account_transactions values('5555','debit','customer',10);
insert into account_transactions values('5555','debit','other',15);
insert into account_transactions values('5555','credit','mgr',15);
Вот скрипка с полями, перевернутыми вокруг
Если таблица заполнена правильно, ваш запрос
SELECT t1.CUSTOMER_NUMBER, sum(t2.amount - t1.amount) AS balance
FROM ACCOUNT_TRANSACTIONS t1,
ACCOUNT_TRANSACTIONS t2
where t1.CUSTOMER_NUMBER=t2.CUSTOMER_NUMBER and
t1.TRANSACTION_TYPE = 'debit' AND
t2.TRANSACTION_TYPE= 'credit' and
t1.ACCOUNT_TYPE='customer' and
t2.ACCOUNT_TYPE='customer'
GROUP BY t1.CUSTOMER_NUMBER
работает нормально.
Удачи.