Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Korzystanie z funkcji przestawnej na wielu kolumnach wiersza Oracle

Jak pokazuje dokumentacja, możesz mieć wiele klauzul funkcji agregujących. Możesz to zrobić:

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 

Jeśli chcesz kolumny w pokazanej kolejności, dodaj kolejny poziom podzapytania:

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 

Skrzypce SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego Oracle działa tak wolno, gdy przekazuję java.sql.Timestamp dla kolumny DATE?

  2. Połączenie oci_connect nie powiodło się

  3. Oracle PL/SQL:przykład dynamicznego SQL przy użyciu wykonania natychmiastowego

  4. Scalanie dwóch wierszy w jeden podczas zastępowania wartości null

  5. Oracle.DataAccess nie jest dostępny do wyboru w Visual Studio 2013