transponer multiple filas fechas convertir con columns columnas 10g sql oracle oracle11g pivot

sql - multiple - pivot oracle columns to rows



Usar pivote en varias columnas de una fila de Oracle (1)

Como muestra la documentación , puede tener múltiples cláusulas de funciones agregadas. Entonces puedes hacer esto:

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

Si quiere las columnas en el orden que mostró, agregue otro nivel de subconsulta:

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 .

Tengo los siguientes datos de muestra en una tabla de Oracle ( tab1 ) y estoy tratando de convertir filas en columnas. Sé cómo usar Oracle pivot en una columna. Pero, ¿es posible aplicarlo a múltiples columnas?

Data de muestra:

Type weight height A 50 10 A 60 12 B 40 8 C 30 15

Mi producto previsto:

A-count B-count C-count A-weight B-weight C-weight A-height B-height C-height 2 1 1 110 40 30 22 8 15

Que puedo hacer:

with T AS (select type, weight from tab1 ) select * from T PIVOT ( count(type) for type in (A, B, C, D,E,F) )

La consulta anterior me da el resultado a continuación

A B C 2 1 1

Puedo reemplazar el count(*) por sum(weight) o sum(height) para girar la altura o el peso. Lo que estoy buscando hacer, pero no puedo hacer, es pivotar en los tres (conteo, peso y altura) en una consulta.

¿Se puede hacer usando pivote?