Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Снова вопрос с датами / 6 сообщений из 6, страница 1 из 1
24.01.2017, 09:24
    #39390031
maxwait
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос с датами
Добрый день!
Вчера задавал вопрос по поводу дат
сегодня продолжу эту тему.

--Query1--
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select c.Id 
       , trunc(p.Date_Begin) as Date_Begin
       , trunc(p.Date_End) as Date_End
       , trunc(p.Date_End) - trunc(p.Date_begin) as CountDate
       , MONTHS_BETWEEN(trunc(p.Date_End), trunc(p.Date_begin)) as CountMonth
from tabl1 c
     join tabl2 p on p.Contract_Id = c.id
where ( p.Date_begin <= '01.01.2017' and (p.Date_END > '01.01.2017' or c.date_close is null)  )
      and c.id = 6315;



Результат запроса
Код: plaintext
1.
         v_date           v_date_out  CountDate     CountMonth
6315	 26.12.2016     26.06.2017	182	          6  

--Query2--
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
declare
  v_date date := '26.12.2016';
  v_date_out date := '26.06.2017';
  v_date_result date ;
  p1 NUMBER :=-1;
  p2 NUMBER :=5; (CountMonth-1)
begin
  WHILE (p1 < p2)
    LOOP
       p1 := p1+1;          

      select case when (ADD_MONTHS(Pkg.Get_Date,p1)) < v_date_out
             then (ADD_MONTHS(D3_Pkg.Get_Date,p1))
               else v_date_out end
      into v_date_result        
        from dual;
      dbms_output.put_line(v_date_result);  
    END LOOP;
end;    



Код: plaintext
1.
2.
3.
4.
5.
6.
Результат
31.01.17
28.02.17
31.03.17
28.04.17
31.05.17
26.06.17

необходимо получить вот такой результат

Код: plaintext
1.
2.
3.
4.
5.
6.
        v_date           v_date_out  CountDate     CountMonth   Послед. раб. день мес.
	26.12.2016	    26.06.2017	182	          6                31.01.17                                                                     
	26.12.2016	    26.06.2017	182	          6                28.02.17
	26.12.2016	    26.06.2017	182	          6                31.03.17
	26.12.2016	    26.06.2017	182	          6                28.04.17
	26.12.2016	    26.06.2017	182	          6                31.05.17
	26.12.2016	    26.06.2017	182	          6                26.06.17

Можно ли не создавая функции из --Query2-- получить необходимы результат
или же создание функции в моем случае является хорошим тоном?
Заранее спасибо!
...
Рейтинг: 0 / 0
24.01.2017, 09:58
    #39390057
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос с датами
maxwait
Код: plsql
1.
p1 := p1+1;

а почему не
Код: plsql
1.
select p1 + 1 into p1 from dual;

?
...
Рейтинг: 0 / 0
24.01.2017, 10:21
    #39390069
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос с датами
maxwait,

есть много способов генерации "последовательностей"
SY как-то дож сравнивал их

один из
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  1  with t as (
  2  select date '2017-06-26' date_out from dual)
  3  select least(last_day(add_months(trunc(date_out,'y'),n)),date_out) ddd from t,
  4* xmltable('0 to xs:integer($M)' passing to_char(date_out,'mm')-1 as m columns n number path '.' )
SQL> /

DDD
--------
31.01.17
28.02.17
31.03.17
30.04.17
31.05.17
26.06.17

6 rows selected.



........
stax
...
Рейтинг: 0 / 0
24.01.2017, 16:15
    #39390421
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос с датами
stax..есть много способов генерации "последовательностей"Но если при генерации не надо учитывать значения того, что уже сгенерировано, то ничего лучше connect by еще не придумали.
...
Рейтинг: 0 / 0
24.01.2017, 16:31
    #39390444
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос с датами
dbms_photoshopstax..есть много способов генерации "последовательностей"Но если при генерации не надо учитывать значения того, что уже сгенерировано, то ничего лучше connect by еще не придумали.
была темка, типа сгенерить 1млн значений (зачем другой вопрос), наскоко помню, connect by проигрывал

зы
имхо
connect by тяжелая операция стараюсь не использовать (есть табличка с гарантированным к-вом строк)

.....
stax
...
Рейтинг: 0 / 0
24.01.2017, 16:39
    #39390452
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова вопрос с датами
stax..dbms_photoshopпропущено...
Но если при генерации не надо учитывать значения того, что уже сгенерировано, то ничего лучше connect by еще не придумали.
была темка, типа сгенерить 1млн значений (зачем другой вопрос), наскоко помню, connect by проигрывал

зы
имхо
connect by тяжелая операция стараюсь не использовать (есть табличка с гарантированным к-вом строк)

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


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