sql >> Database teknologi >  >> RDS >> Oracle

SQL joining spørgsmål

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.



  1. Sådan fungerer REGEXP_SUBSTR()-funktionen i MySQL

  2. SQL Server ROUND() Funktion:Hvad er det til, og hvorfor skal du bekymre dig?

  3. Hvordan kan jeg se, om en database er af høj kvalitet?

  4. Sådan fungerer AT TIME ZONE i PostgreSQL