Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывести остаток по всем счетам на дату. / 9 сообщений из 9, страница 1 из 1
14.09.2019, 17:18
    #39861932
Елена__geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести остаток по всем счетам на дату.
Добрый день.
Глубоко уважаемые Гуру,подскажите, пожалуйста общий план, как правильно составить запрос.
Необходимо вывести остаток на всех счетах из таблицы T_ACC на дату задам как параметр.
Условие- есть Таблица счетов (T_ACC). Поле AMOUNT содержит входящий остаток на первый не закрытый операционный день.
Таблица закрытых операционных дней (T_OPER_DATE).Таблица операций по счетам (T_TRANS). Содержит пару дебет (Дт) - кредит (Кт), Сумма операции в рублях.
Если в таблице T_TRANS счет указан в поле DEBIT_ACC_ID, то у него уменьшается остаток на дату операции. Если в таблице T_TRANS счет указан в поле CREDIT_ACC_ID, то у него увеличивается остаток на дату операции.
...
Рейтинг: 0 / 0
14.09.2019, 18:15
    #39861935
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести остаток по всем счетам на дату.
Елена__geoкак правильно составить запрос.

Остаток на незакрытый день плюс сумма движений между этим днём и заданным. В чём проблема-то?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.09.2019, 19:35
    #39861944
Елена__geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести остаток по всем счетам на дату.
Dimitry Sibiryakov,спасибо. Нужен как правильно сказать шаблон для такого запроса.
...
Рейтинг: 0 / 0
14.09.2019, 20:01
    #39861950
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести остаток по всем счетам на дату.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select sum(AMOUNT)
  from (select AMOUNT
          from T_ACC
         where ACC_ID = :1
            --and DATE = :2
        union all
        select ...
          from T_TRANS
         where DEBIT_ACC_ID = :1 or CREDIT_ACC_ID = :1
       )



Логика ... зависит от того, что у вас в таблице транзакций. Как пример:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
with t(AMOUNT,
DEBIT_ACC_ID,
CREDIT_ACC_ID) as
 (select 100, 1, null
    from dual
  union all
  select 200, null, 1
    from dual
  union all
  select 300, 2, null
    from dual)

select sum(case
             when DEBIT_ACC_ID = 1 then
              -AMOUNT
             when CREDIT_ACC_ID = 1 then
              AMOUNT
             else
              0
           end) BALANCE
  from t
 where DEBIT_ACC_ID = 1
    or CREDIT_ACC_ID = 1
...
Рейтинг: 0 / 0
15.09.2019, 13:47
    #39862004
Елена__geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести остаток по всем счетам на дату.
dmdmdm,спасибо, а таблицу с закрытыми опер днями как тогда использовать в запросе?
...
Рейтинг: 0 / 0
15.09.2019, 14:43
    #39862011
Елена__geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести остаток по всем счетам на дату.
dmdmdm,

Таблица транзакций
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
COMMENT ON COLUMN t_trans.amount IS 'Сумма TV '
/
COMMENT ON COLUMN t_trans.credit_acc_id IS 'Счет Кт'
/
COMMENT ON COLUMN t_trans.debit_acc_id  IS 'Счет Дт'
/
COMMENT ON COLUMN t_trans.no IS 'Номер операции'
/
COMMENT ON COLUMN t_trans.value_date IS 'Дата операции'
...
Рейтинг: 0 / 0
15.09.2019, 15:02
    #39862018
Елена__geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести остаток по всем счетам на дату.
CREATE TABLE t_acc
(acc_id VARCHAR2(20 BYTE) NOT NULL,
amount NUMBER DEFAULT 0 NOT NULL,
open_date DATE NOT NULL,
close_date DATE)
Таблица счетов
...
Рейтинг: 0 / 0
16.09.2019, 05:56
    #39862107
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести остаток по всем счетам на дату.
Елена__geoа таблицу с закрытыми опер днями как тогда использовать в запросе?

По вашему описанию это необязательно, т.к.

Елена__geoТаблица счетов (T_ACC). Поле AMOUNT содержит входящий остаток на первый не закрытый операционный день.

Можно использовать и таблицу закрытых операционных дней.
...
Рейтинг: 0 / 0
16.09.2019, 14:18
    #39862309
Елена__geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести остаток по всем счетам на дату.
Спасибо большое. Разобралась.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывести остаток по всем счетам на дату. / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]