Запрос суммы открытия и баланса для другой учетной записи в postgresql - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь установить столбец открытия и сальдо в запросе postgresql, в котором я ввожу определенный диапазон дат, и первые данные открытия должны быть до начальной даты, а баланс должен быть (начальные данные + дебет - кредит) в каждой строке с датой.

*** Вот мое примерное имя базы данных "creation_and_closing"

date1          acc_no    debit  credit
01/01/2017       a        500       0  
02/01/2017       a          0     400  
03/01/2017       a        100       0  
04/01/2017       a        800       0  
05/01/2017       a          0     700  
06/01/2017       a        800       0  
01/01/2017       b        500       0  
02/01/2017       b          0     400  
03/01/2017       b        100       0  
04/01/2017       b        800       0  
05/01/2017       b          0     700  
06/01/2017       b        800       0  

* Мой ожидаемый запрос в postgresql * диапазон дат от 01.01.2017 до 01.01.2017

                                    opening : 100
 date1          acc_no     debit  credit   balance
 03/01/2017       a        100       0        200
 04/01/2017       a        800       0       1000
 05/01/2017       a          0     700        300
 06/01/2017       a        800       0       1100
                                    opening : 100
 date1          acc_no     debit  credit   balance                                        
 03/01/2017       b        100       0        200
 04/01/2017       b        800       0       1000
 05/01/2017       b          0     700        300
 06/01/2017       b        800       0       1100

1 Ответ

0 голосов
/ 15 ноября 2018

*** Создайте имя таблицы "creation_and_closing" в вашей базе данных

create table opening_and_closing (date1 date, acc_no varchar(250), debit numeric,credit numeric);

*** Вставьте значения в вашу таблицу «creation_and_closing»

insert  into opening_and_closing
values  ('2017-01-01','a',500,0),
('2017-01-02','a',0,400),
('2017-01-03','a',100,0),
('2017-01-04','a',800,0),
('2017-01-05','a',0,700),
('2017-01-06','a',800,0),
('2017-01-01','b',500,0),
('2017-01-02','b',0,400),
('2017-01-03','b',100,0),
('2017-01-04','b',800,0),
('2017-01-05','b',0,700),
('2017-01-06','b',800,0);

*** Теперь выполните следующий запрос

select  date1,acc_no,opening,debit,credit,
        (opening+sum(debit-credit) OVER (partition by acc_no order by date1)) as balance
from

    (select date1,acc_no,debit,credit,
    (select sum(debit)-sum(credit) from opening_and_closing where date1 < '2017-01-03'   and  acc_no ='a') as opening

    from opening_and_closing
    where   date1 between '2017-01-03' and '2017-01-06'
    and acc_no ='a'
    group by 1,2,3,4
    order by date1)x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...