Oracle
 sql >> база данни >  >> RDS >> Oracle

Използване на въртене върху множество колони от ред на Oracle

Както показва документацията, можете да имате множество клаузи за агрегатни функции. Така че можете да направите това:

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 

Ако искате колоните в реда, който сте показали, добавете друго ниво на подзаявка:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разделената последователност на Oracle

  2. Как да премахнете дубликатите от списъка, разделен от пространството от Oracle regexp_replace?

  3. Примери за синтаксис за присъединяване на oracle

  4. Oracle:Java съхранена процедура, изпращаща JMS съобщение

  5. Как да проверите дали колона съществува, преди да я добавите към съществуваща таблица в PL/SQL?