Bạn có thể sử dụng kết hợp Analytics (nếu bạn đang sử dụng phiên bản Oracle đủ gần đây) và Pivot Table để thực hiện việc đó. Điều này sẽ hoạt động với tập dữ liệu của bạn.
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;
Truy vấn bên trong sử dụng phân tích để lấy 4 số rx gần đây nhất cho mỗi loại thuốc dựa trên ngày yêu cầu. Sau đó, chúng tôi sử dụng một trục xoay để đưa nó từ 4 dòng cho mỗi loại thuốc thành một dòng có 4 cột.