Member 14225726 Ответов: 0

Oracle SQL - отображение 5 страниц на jasper


Как я могу напечатать всего 5 страниц только на основе этого запроса ниже. Он иногда отображает полный месяц или даже 4 дня, когда я пробую следующие даты и игнорирую фактический диапазон дат. Запрос связан с Jasper и передает диапазон дат в качестве параметров

to_date('16032020','DDMMYYYY') - to_date('20032020','DDMMYYYY')
to_date('23032020','DDMMYYYY') - to_date('27032020','DDMMYYYY')
to_date('30032020','DDMMYYYY') - to_date('03042020','DDMMYYYY')
to_date('06042020','DDMMYYYY') - to_date('10042020','DDMMYYYY')



Параметр Яшмы[^]

Фактический Запрос
select e.employee_id,
       e.initials || ' ' || regexp_replace(e.surname, '\([^()]*\)', '') farm_manager,
       r.research_station_id,
       r.name,
       dr.attendance_date attendance_date
  from research_station r
  join employees e
    on (e.employee_id = r.farm_manager)
 cross join (select ($P{Date_from} + rownum - 1) attendance_date
               from dual
             connect by level <= ($P{Date_from} - sysdate + 1)) dr
  join employee_jobs ej
    on (e.employee_id = ej.employee_id)
 where r.research_station_id = $P{Research_Station_id}


Что я уже пробовал:

Тестовый Запрос
select e.employee_id,
       e.initials || ' ' || regexp_replace(e.surname, '\([^()]*\)', '') farm_manager,
       r.research_station_id,
       r.name,
       dr.attendance_date attendance_date
  from research_station r
  join employees e on (e.employee_id = r.farm_manager)
 cross join (select (to_date('16032020','DDMMYYYY') + rownum - 1) attendance_date from dual 
 connect by level <= to_date('20032020','DDMMYYYY') - sysdate + 1) dr
  join employee_jobs ej on (e.employee_id = ej.employee_id)
 where r.research_station_id = 2;

Jörgen Andersson

Обычно вы ограничиваете количество строк, используя OFFSET FETCH NEXT.

Если у вас есть более старая версия oracle, вам нужно использовать Rownum.

Какая версия вашего Оракула?

0 Ответов