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

Отбор нужного в представление.

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


Вступление в Клуб: 05.06.2008
СообщениеВт Июл 08, 2008 04:29   Отбор нужного в представление. Ответить с цитатой
Полезность: Нет оценки
Задача такая: необходимо создать представление по документам банк-фактуры (настроено в операции фильтр), где показываются документы за период (операция фильтр).
Подскажите как сделать так, чтобы:
Если за данный период по счету несколько документов, то показывать только первый, но если были по счету документы раньше даты начала периода, то ничего не показывать.

P.S. Заранее спасибо. Smile
dnk_dz
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Июл 08, 2008 05:35    Ответить с цитатой
Полезность: 1
На вскидку примерно так:
1. Выбрать минимальный ID документа по счету за период. С группировкой по счету.
2. Выбрать все документы, получившиеся в п.1

типа:
Код:
select a(
   a.[DOCUMENT_NUM],
   ...
)
in ::[MAIN_DOCUM] where a in
(
   select b
   (min(b%id))
   in ::[MAIN_DOCUM] where b.[DATE_PROV] >= date1  and
   b.[DATE_PROV] <= date2
   group by b.[ACC_DT]
)
InNesKA
Участник со стажем


Вступление в Клуб: 05.06.2008
СообщениеВт Июл 08, 2008 06:07    Ответить с цитатой
Полезность: Нет оценки
dnk_dz пишет:
На вскидку примерно так:
1. Выбрать минимальный ID документа по счету за период. С группировкой по счету.
2. Выбрать все документы, получившиеся в п.1

типа:
Код:
select a(
   a.[DOCUMENT_NUM],
   ...
)
in ::[MAIN_DOCUM] where a in
(
   select b
   (min(b%id))
   in ::[MAIN_DOCUM] where b.[DATE_PROV] >= date1  and
   b.[DATE_PROV] <= date2
   group by b.[ACC_DT]
)


Как это вставить в простое представление для просмотра с фильтром? Crying or Very sad
dnk_dz
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеВт Июл 08, 2008 06:10    Ответить с цитатой
Полезность: Нет оценки
InNesKA пишет:

Как это вставить в простое представление для просмотра с фильтром? Crying or Very sad


Никак. Только сделать PL+ представление.
r00st
Эксперт


Вступление в Клуб: 14.09.2007
СообщениеВт Июл 08, 2008 06:31    Ответить с цитатой
Полезность: Нет оценки
Этот вариант годится, если нужен любой из имеющихся документов в заданном периоде.
Если же обязателен первый (по дате проводки или дате документа), то не учитывается возможность вставки прошлой датой.
InNesKA
Участник со стажем


Вступление в Клуб: 05.06.2008
СообщениеВт Июл 08, 2008 08:06    Ответить с цитатой
Полезность: Нет оценки
dnk_dz пишет:
InNesKA пишет:

Как это вставить в простое представление для просмотра с фильтром? Crying or Very sad


Никак. Только сделать PL+ представление.


Я выборку написала...просто думала может можно это в простом представление использовать.
Alex2019
Профи


Вступление в Клуб: 02.07.2007
СообщениеВт Июл 08, 2008 18:29    Ответить с цитатой
Полезность: Нет оценки
InNesKA пишет:
dnk_dz пишет:
InNesKA пишет:

Как это вставить в простое представление для просмотра с фильтром? Crying or Very sad


Никак. Только сделать PL+ представление.


Я выборку написала...просто думала может можно это в простом представление использовать.

Можно попробовать в простом представлении в условии написать что-то вроде
Код:
A1_1.ID in (select B.ID from Z#MAIN_DOCUM B where B.C_DATE_DOC...
, а селект предварительно написать в теле фильтра, откомпилить и полученный в теле пакета результат вставить в условие Smile
Вот только с датами придется помудрить, возможно через SYS_CONTEXT, по принципу того, как это сделано в "Документы опердня". Впрочем, если есть фильтр, и даты задаются в нем. то задача упрощается
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

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