sql >> Databáze >  >> RDS >> Oracle

SQL připojovací otázka

K tomu můžete použít kombinaci Analytics (pokud používáte dostatečně aktuální verzi Oracle) a kontingenční tabulky. To by mělo fungovat s vaší datovou sadou.

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;

Vnitřní dotaz využívá analýzy k získání nejnovějších 4 čísel Rx pro každý lék na základě data nároku. Potom pomocí pivotu převedeme ze 4 řádků na lék na jeden řádek se 4 sloupci.



  1. Jak ALTER více sloupců najednou v SQL Server

  2. ORA-00942:Lze vybrat ze schema.table, ale ne z tabulky?

  3. Parametrizovaný dotaz pro MySQL s C#

  4. Upgrade MySQL na MariaDB 10 (část 2 – Upgrade MariaDB/MySQL 5.5 na verzi 10.0)