sql >> Databasteknik >  >> RDS >> Oracle

SQL-anslutningsfråga

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.



  1. Oracle sql handledning:Grundläggande SQL-sats

  2. Oracle Forms i R12/R12.2

  3. MySQL lagrad procedur vs funktion, vilken skulle jag använda när?

  4. Hur förbereder man uttalande för uppdateringsfråga?