VIEW по выходным дням календаря
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 год.  |
|
 |
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 |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|