powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / дни просрочки
3 сообщений из 3, страница 1 из 1
дни просрочки
    #39616351
просрочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Существует таблица остатков просроченного основного долга клиента вида

Date_Rest Rest_458
12.01.2010 100.00
10.02.2010 800.00
15.04.2010 0.00
11.09.2010 400.00
01.06.2010 0.00
01.07.2010 0.00
12.07.2010 300.00

Необходимо скрипт, формирующий таблицу вида

Date_Report Rest_Day
31.12.2009
31.01.2010
28.02.2010
31.03.2010
30.04.2010
31.05.2010
30.06.2010
31.07.2010
31.08.2010

Здесь Date_Report – отчетная дата, Rest_Day - количество дней просрочки клиента на отчетную дату.
...
Рейтинг: 0 / 0
дни просрочки
    #39616411
brzl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Трёхэтажное"
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
with rests as
        (select to_date('12.01.2010', 'dd.mm.yyyy') date_rest, 100 rest from dual
         union all
         select to_date('10.02.2010', 'dd.mm.yyyy') date_rest, 800 rest from dual
         union all
         select to_date('15.04.2010', 'dd.mm.yyyy') date_rest, 0 rest from dual
         union all
         select to_date('11.09.2010', 'dd.mm.yyyy') date_rest, 400 rest from dual
         union all
         select to_date('01.06.2010', 'dd.mm.yyyy') date_rest, 0 rest from dual
         union all
         select to_date('01.07.2010', 'dd.mm.yyyy') date_rest, 0 rest from dual
         union all
         select to_date('12.07.2010', 'dd.mm.yyyy') date_rest, 300 rest from dual),
    dates as
        (select trunc(last_day(add_months(:begin_date, level - 1))) date_report
           from dual
         connect by level <= months_between(trunc(:end_date, 'mm'), trunc(:begin_date, 'mm')) + 1)
  select date_report as "Отчетная дата"
       , coalesce((date_report - min(date_rest) over (partition by rn2)) * has_rest, 0) as "Дней просрочки"
    --       , has_rest
    --       , rest
    --       , min(date_rest) over (partition by rn2)
    from (select date_report
               , date_rest
               , has_rest
               , rest
               , row_number() over (order by date_report) - row_number() over(partition by has_rest order by date_report) rn2
            from (select date_report
                       , date_rest
                       , coalesce(rest, last_value(rest ignore nulls) over (order by date_report), 0) rest
                       , case when coalesce(rest, last_value(rest ignore nulls) over (order by date_report), 0) > 0 then 1 else 0 end has_rest
                    from (  select d.date_report
                                 , max(r.date_rest) keep (dense_rank first order by d.date_report) date_rest
                                 , max(r.rest) keep (dense_rank first order by d.date_report) rest
                              from dates d left join rests r on (r.date_rest between trunc(date_report, 'mm') and date_report)
                          group by date_report)))
order by 1
/


...
Рейтинг: 0 / 0
дни просрочки
    #39616660
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просрочка
Date_Report Rest_Day
31.12.2009
31.01.2010
28.02.2010
31.03.2010
30.04.2010
31.05.2010
30.06.2010
31.07.2010
31.08.2010

Здесь Date_Report – отчетная дата, Rest_Day - количество дней просрочки клиента на отчетную дату.
предлагаете Rest_Day самим расчитать (предлжить алгоритм )?

напр
20.01.2018 100.00
30.01.2018 800.00
10.03.2018 0.00
11.04.2018 400.00


31.01.2018 - 11
28.02.2010 - 39 (11+28)
31.03.2010 - 0 (нет просрочки)
30.04.2010 - 20

.....
stax
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / дни просрочки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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