Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Помогите написать фильтр  [new]
Mr.Brown
Member

Откуда: Japan
Сообщений: 57
Ребята помоги фильтр, нужен отчет по позициям.
Отчет работает через процедуру, где входной параметр тип отчета и дата.
Отчет 1: необходимо отобразить позиции которые были открыты в любой время и закрыты в течении последний трех дней совместно с позициями которые открыты сегодня.
Отчет 2: необходимо отобразить позиции которые были открыты в любой время и закрыты в течении последний десяти дней.
Картинка с другого сайта.

К сообщению приложен файл. Размер - 1Kb
10 июн 19, 00:37    [21905587]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать фильтр  [new]
Mr.Brown
Member

Откуда: Japan
Сообщений: 57
Mr.Brown
Ребята помогите фильтр, нужен отчет по позициям.
Отчет работает через процедуру, где входной параметр тип отчета и дата.
Отчет 1: необходимо отобразить позиции которые были открыты в любой время и закрыты в течении последний трех дней совместно с позициями которые открыты сегодня.
Отчет 2: необходимо отобразить позиции которые были открыты в любой время и закрыты в течении последний десяти дней.
Картинка с другого сайта.


К сообщению приложен файл. Размер - 18Kb
10 июн 19, 00:38    [21905588]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать фильтр  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28975
Mr.Brown
Ребята помоги
Рыжый, ты промазал с форумом и недоприготовил >100k ен.
10 июн 19, 07:46    [21905631]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать фильтр  [new]
Mr.Brown
Member

Откуда: Japan
Сообщений: 57
Elic
Mr.Brown
Ребята помоги
Рыжый, ты промазал с форумом и недоприготовил >100k ен.


Опечатка, когда пишешь пост в 3 часа ночи) исправил потом
10 июн 19, 08:49    [21905656]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать фильтр  [new]
Dshedoo
Member

Откуда:
Сообщений: 322
Mr.Brown
Отчет 1: необходимо отобразить позиции которые были открыты в любой время и закрыты в течении последний трех дней совместно с позициями которые открыты сегодня.
Картинка с другого сайта.

Select * from table t
where "Дата открытия" >= сегодня или "Дата закрытия" >= сегодня минус три дня


Mr.Brown
Отчет 2: необходимо отобразить позиции которые были открыты в любой время и закрыты в течении последний десяти дней.
Картинка с другого сайта.


Select * from table t
where "Дата закрытия" >= сегодня минус десять дней
10 июн 19, 08:54    [21905658]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать фильтр  [new]
Mr.Brown
Member

Откуда: Japan
Сообщений: 57
Dshedoo
Mr.Brown
Отчет 1: необходимо отобразить позиции которые были открыты в любой время и закрыты в течении последний трех дней совместно с позициями которые открыты сегодня.
Картинка с другого сайта.

Select * from table t
where "Дата открытия" >= сегодня или "Дата закрытия" >= сегодня минус три дня


Mr.Brown
Отчет 2: необходимо отобразить позиции которые были открыты в любой время и закрыты в течении последний десяти дней.
Картинка с другого сайта.


Select * from table t
where "Дата закрытия" >= сегодня минус десять дней


спасибо но как использовать в одном селекте?
10 июн 19, 11:02    [21905761]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать фильтр  [new]
Dshedoo
Member

Откуда:
Сообщений: 322
Mr.Brown
Dshedoo
пропущено...

Select * from table t
where "Дата открытия" >= сегодня или "Дата закрытия" >= сегодня минус три дня


пропущено...


Select * from table t
where "Дата закрытия" >= сегодня минус десять дней


спасибо но как использовать в одном селекте?


Очевидно же:
Select * from table t
where "Дата открытия" >= сегодня или "Дата закрытия" >= сегодня минус три дня или "Дата закрытия" >= сегодня минус десять дней

Но есть вероятность, что какое-то одно условие перекрывает другое.
10 июн 19, 11:11    [21905764]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать фильтр  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1840
Mr.Brown
Ребята помоги фильтр, нужен отчет по позициям.
Отчет работает через процедуру, где входной параметр тип отчета и дата.
Отчет 1: необходимо отобразить позиции которые были открыты в любой время и закрыты в течении последний трех дней совместно с позициями которые открыты сегодня.
Отчет 2: необходимо отобразить позиции которые были открыты в любой время и закрыты в течении последний десяти дней.
Картинка с другого сайта.


роль даты в етой задаче?

....
stax
10 июн 19, 11:20    [21905782]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать фильтр  [new]
maverick2104
Member

Откуда:
Сообщений: 300
Stax

роль даты в етой задаче?



Ясно что это только у автора в голове , ну может для того чтоб создать отчет за разные дни , и поэтому не используют sysdate .

+ Попытка угадать
declare
 
 тип_отчета number; -- 1 или 2
 дата_отчета date ;

begin 
 --тип_отчета  := '2';
 --дата_отчета := to_date('10.06.2019','dd.mm.yyyy');

if тип_отчета= '1' then 
for c in ( with t as ( 
            select  '1' as Позиция , to_date('28.04.2019','dd.mm.yyyy') as Дата_открытия , null as Дата_закрытия from dual
           union all
            select  '2' as Позиция , to_date('16.01.2019','dd.mm.yyyy') as Дата_открытия , to_date('29.04.2019','dd.mm.yyyy') as Дата_закрытия from dual
           union all
            select  '3' as Позиция , to_date('07.10.2018','dd.mm.yyyy') as Дата_открытия , to_date('04.06.2019','dd.mm.yyyy') as Дата_закрытия from dual
           union all
            select  '4' as Позиция , to_date('06.05.2019','dd.mm.yyyy') as Дата_открытия , null as Дата_закрытия from dual
           union all
            select  '5' as Позиция , to_date('08.04.2018','dd.mm.yyyy') as Дата_открытия , to_date('06.06.2019','dd.mm.yyyy') as Дата_закрытия from dual
           union all
            select  '6' as Позиция , to_date('10.06.2019','dd.mm.yyyy') as Дата_открытия , to_date('08.06.2019','dd.mm.yyyy') as Дата_закрытия from dual)
            select позиция  from t where  дата_открытия=дата_отчета and дата_закрытия>=дата_отчета-3 ) 
             loop 
              begin  
              dbms_output.put_line(c.позиция);
              end; end loop;
  end if ;
if тип_отчета= '2' then 
           for c in ( with t as ( 
            select  '1' as Позиция , to_date('28.04.2019','dd.mm.yyyy') as Дата_открытия , null as Дата_закрытия from dual
           union all
            select  '2' as Позиция , to_date('16.01.2019','dd.mm.yyyy') as Дата_открытия , to_date('29.04.2019','dd.mm.yyyy') as Дата_закрытия from dual
           union all
            select  '3' as Позиция , to_date('07.10.2018','dd.mm.yyyy') as Дата_открытия , to_date('04.06.2019','dd.mm.yyyy') as Дата_закрытия from dual
           union all
            select  '4' as Позиция , to_date('06.05.2019','dd.mm.yyyy') as Дата_открытия , null as Дата_закрытия from dual
           union all
            select  '5' as Позиция , to_date('08.04.2018','dd.mm.yyyy') as Дата_открытия , to_date('06.06.2019','dd.mm.yyyy') as Дата_закрытия from dual
           union all
            select  '6' as Позиция , to_date('10.06.2019','dd.mm.yyyy') as Дата_открытия , to_date('08.06.2019','dd.mm.yyyy') as Дата_закрытия from dual)
            select позиция  from t where  дата_закрытия>=дата_отчета-10 ) 
             loop 
              begin  
              dbms_output.put_line(c.позиция);
              end; end loop;
  end if ;
  end;


Проблема в другом , не до конца ясно что за 'вид' должен иметь этот отчет .
10 июн 19, 12:24    [21905847]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить