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

Použití pivotu na více sloupcích řádku Oracle

Jak ukazuje dokumentace, můžete mít více klauzulí agregační funkce. Takže můžete udělat toto:

select * from (
  select * from tab1
)
pivot (
  count(type) as ct, sum(weight) as wt, sum(height) as ht
  for type in ('A' as A, 'B' as B, 'C' as C)
);

A_CT A_WT A_HT B_CT B_WT B_HT C_CT C_WT C_HT
---- ---- ---- ---- ---- ---- ---- ---- ----
   2  110   22    1   40    8    1   30   15 

Pokud chcete, aby sloupce byly v zobrazeném pořadí, přidejte další úroveň poddotazu:

select a_ct, b_ct, c_ct, a_wt, b_wt, c_wt, a_ht, b_ht, c_ht
from (
  select * from (
    select * from tab1
  )
  pivot (
    count(type) as ct, sum(weight) as wt, sum(height) as ht
    for type in ('A' as A, 'B' as B, 'C' as C)
  )
);

A_CT B_CT C_CT A_WT B_WT C_WT A_HT B_HT C_HT
---- ---- ---- ---- ---- ---- ---- ---- ----
   2    1    1  110   40   30   22    8   15 

SQL Fiddle.



  1. Uložit běžný dotaz jako sloupec?

  2. Ukončení podpory Salesforce TLS 1.0

  3. Jak rozdělit okno dotazu v SQL Server Management Studio (SSMS) – SQL Server / TSQL výukový program, část 13

  4. SQL:Analyzujte řetězec oddělený čárkami a použijte jej jako spojení