Du kan bruge en kombination af Analytics (hvis du har en ny nok version af Oracle) og en pivottabel til at gøre det. Dette burde fungere med dit datasæt.
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;
Den indre forespørgsel bruger analyser til at trække de seneste 4 rx-numre for hvert lægemiddel baseret på kravdatoen. Så bruger vi en pivot til at tage det fra 4 linjer pr. lægemiddel til en linje med 4 kolonner.