Вопрос присоединения к SQL
Вот моя ситуация:
У меня есть одна таблица, в которой содержится список проданных лекарств с указанием НДЦ (идентификатора), проданного количества и того, является ли препарат торговой маркой или дженериком. У меня есть другая таблица, которая содержит номера рецептов, даты и НДЦ.
Мне нужно составить список 4 последних номеров рецептов для 50 лучших непатентованных лекарств и 50 лучших брендовых лекарств.
Упрощенный пример:
Drug_list:
NDC QTY Type
123 50 Generic
125 47 Brand
128 34 Generic
...
549 1 Brand
294 1 Generic
Claims_list:
NDC RX_num Date
123 1234 20081027
123 4194 20090517
594 12598 20091012
Как бы я написать объединение, чтобы создать список
NDC RX1, RX2, RX3, RX4
где НДЦ - 50 самых распространенныхМарка» NDC и следующие RX - это номера RX самых последних заявлений?
~~~~~~~
Пока яу нас есть это:
select t.ndc, cl.rx, cl.date from (
select * from (
select * from (
select * from drug_list where brand = 'Generic')
order by qty)
where rownum < 51) t
join claims_list cl on cl.ndc = t.ndc
order by t.ndc, cl.date;
Что дает мне часть пути там. Оттуда, как я могу обрезать его до 4 результатов на NDC? И возможно ли получить это в следующем:
NDC, RX1, RX2, RX3, RX4
Если я должен сообщить об этом как:
NDC1, RX1
NDC1, RX2
NDC1, RX3
NDC1, RX4
NDC2, RX1
NDC2, RX2
NDC2, RX3
NDC2, RX4
NDC3, RX1
... etc
но я бы предпочел иметь его на одной линии.
~~~~ (согласно запросу: создайте операторы таблиц для примеров таблиц):
create table drug_list
(NDC varchar2(15), QTY number, type varchar2(10));
create table claims_list
(NDC varchar2(15), RX_num varchar2(20), "date" date);