Du kan använda en kombination av Analytics (om du har en tillräckligt ny version av Oracle) och en pivottabell för att göra det. Detta bör fungera med din datauppsättning.
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 inre frågan använder analyser för att hämta de senaste 4 rx-talen för varje läkemedel baserat på ansökningsdatumet. Sedan använder vi en pivot för att ta den från 4 rader per läkemedel till en rad med 4 kolumner.