Можете да използвате комбинация от Анализ (ако използвате достатъчно скорошна версия на Oracle) и обобщена таблица, за да го направите. Това трябва да работи с вашия набор от данни.
select ndc,
max(decode(rn, 1, rx_num, null)) rx1,
max(decode(rn, 2, rx_num, null)) rx2,
max(decode(rn, 3, rx_num, null)) rx3,
max(decode(rn, 4, rx_num, null)) rx4
from (select *
from (select claims_list.ndc,
claims_list.rx_num,
row_number() over (partition by claims_list.ndc order by claims_list.date desc) rn
from claims_list,
(select *
from (select *
from drug_list
where type = 'Generic'
order by qty desc
)
where rownum < 51
) drug_list
where drug_list.ndc = claims_list.ndc
)
where rn < 5
order by ndc, rn
)
group by ndc;
Вътрешната заявка използва анализи, за да извлече най-новите 4 rx номера за всяко лекарство въз основа на датата на искане. След това използваме въртене, за да го изведем от 4 реда за лекарство към един ред с 4 колони.