отчет о банковском счете (таблица) - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь выбрать отчет о транзакции банковского счета из 3 таблиц: персона, счета и транзакция. В результате я хочу получить таблицу с тремя столбцами: Имя владельца аккаунта | ID транзакции | Остаток по счету после транзакции. Вот мои сырые таблицы:

--Person ===>>> 
CREATE TABLE "BANK"."ACCOUNTS" 
    "ID" NUMBER(*,0) NOT NULL ENABLE, 
    "PERSONID" NUMBER(*,0)

--Accounts ===>>>
 CREATE TABLE "BANK"."PERSON" 
    "ID" NUMBER(*,0) NOT NULL ENABLE, 
    "NAME" VARCHAR2

--Transactions ===>>>
CREATE TABLE "BANK"."TRANSACTION" 
    "ID" NUMBER(*,0) NOT NULL ENABLE, 
    "OAID" NUMBER,  -- Origin Account ID
    "DAID" NUMBER,  -- Destination Account ID
    "VALUE" FLOAT(126), 
    "TIMESTAMP" TIMESTAMP (6)

Я много боролся с этим и не мог придумать логику. Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 14 января 2019

вот запрос, который может вам помочь:

select p.name as account_owner, t.id as transaction_id, 
SUM(case when t.oaid = a.id then -t.value else t.value end) 
OVER(PARTITION BY a.id ORDER BY t.timestamp RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS remainder 
from bank.person p
inner join bank.accounts a on a.personid = p.id
inner join bank.transaction t on t.oaid = a.id or t.daid = a.id 

для любых уточнений не стесняйтесь комментировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...