CftClub.ru
Клуб специалистов ЦФТ-Банк

VIEW по выходным дням календаря

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
Andry
Участник - экстремал


Вступление в Клуб: 14.01.2009
СообщениеПт Окт 05, 2012 11:26   VIEW по выходным дням календаря Ответить с цитатой
Полезность: Нет оценки
Коллеги, есть ли у кого-нибудь представление по выходным дням календаря HOLIDAYS за период?

Нужно чтобы туда выводились все выходные дни, как обычные субботы/воскресенья, так и исключения.

Я так понимаю что нужно получать массив из
[[CALENDAR].get_dates('HOLIDAYS', p_beg_date, p_end_date - p_beg_date + 1, ds);

но как по-простому его преобразовать с таблицу, неясно.
dbmaslov
Профи


Вступление в Клуб: 11.07.2007
СообщениеПт Окт 05, 2012 12:08    Ответить с цитатой
Полезность: Нет оценки
Андрей, а ты поcмотри с какой таблицей работает [CALENDAR].get_dates, или сразу в пакет calendar_mgr.
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеПт Окт 05, 2012 12:34    Ответить с цитатой
Полезность: Нет оценки
На мой взгляд накидать PL+ вьюху дело пяти минут.
Выборка по журналу опердней с проверкой на вхождение в календарь 'HOLIDAYS'
_________________
всегда есть как минимум 2 выхода
Andry
Участник - экстремал


Вступление в Клуб: 14.01.2009
СообщениеПт Окт 05, 2012 12:45    Ответить с цитатой
Полезность: Нет оценки
Он работает с таблицей Calendar_Value%rowtype, но в ней лежат только исключения (в обе стороны).
кроме того в таблице CALENDARS прописаны исключения, которые тоже надо добавить...

Похоже что нет иного варианта как в операции-фильтре предварительно сформировать временную таблицу из суббот/воскресений за период, добавить/вычесть дни из Calendar_Value%rowtype и CALENDARS,

а уже по результату делать view....
Andry
Участник - экстремал


Вступление в Клуб: 14.01.2009
СообщениеПт Окт 05, 2012 12:46    Ответить с цитатой
Полезность: Нет оценки
Alexsey пишет:
На мой взгляд накидать PL+ вьюху дело пяти минут.
Выборка по журналу опердней с проверкой на вхождение в календарь 'HOLIDAYS'


Ага, я неточно сформулировал. Нужен календарь планируемых выходных от текущей даты + 1 год. Smile
svn
Профи


Вступление в Клуб: 04.02.2008
СообщениеПт Окт 05, 2012 13:27    Ответить с цитатой
Полезность: 2
type main is
select C
(
trunc(sysdate + C.[REC_NUM] + 1) : CDATE
,decode([CALENDAR].Check_Date('HOLIDAYS',sysdate + C.[REC_NUM] + 1 ),0,1,2) : DATE_TYPE
) in ::[DUMMY] all
where C.[REC_NUM] <= 366

только ::[DUMMY] сгенерите предварительно
Andry
Участник - экстремал


Вступление в Клуб: 14.01.2009
СообщениеПт Окт 05, 2012 14:35    Ответить с цитатой
Полезность: Нет оценки
svn пишет:
только ::[DUMMY] сгенерите предварительно


Ну да, получается это самый простой вариант.
Спасибо!
kai
Профи


Вступление в Клуб: 16.08.2012
СообщениеВт Окт 09, 2012 09:41    Ответить с цитатой
Полезность: 2
Чтобы не генерить ::[DUMMY], можно использовать инструкцию connect by:

Код:
type main is
   select u( sysdate + level + 1   : C_DATE
         , decode([CALENDAR].Check_Date('HOLIDAYS', sysdate + level + 1),0,1,2)   : C_DATE_TYPE
         )
      in   dual%rowtype
   connect by level <= add_months(sysdate,12) - sysdate
;


И предлагаю "высокосность" года учесть через add_months(sysdate,12) - sysdate
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru