Oracle SQL Developer: Cómo transponer filas a columnas usando la función PIVOT
Estoy intentando crear una consulta para transponer filas en columnas usando la función PIVOT.
Este es elcontact
tabla que quiero transponer en filas:
PARTYID CONTACTTEXT CONTACTTYPECD
---------- ------------ -------------
100 0354441010 1
100 0355551010 2
100 0428105789 3
100 [email protected] 4
Mi resultado previsto:
PARTYID PHONE FAX MOBILE EMAIL
---------- ------------ ------------ ------------ ------------
100 0354441010 0355551010 0428105789 [email protected]
Mi consulta:
SELECT * FROM
(
SELECT partyId, contacttext, contacttypecd
FROM CONTACT
WHERE partyId = 100;
)
PIVOT (
MAX(contacttext)
FOR contacttypecd in (1 Phone, 2 Fax, 3 Mobile, 4 Email));
Errores que obtengo:
Error starting at line 9 in command:
FOR contacttypecd in (1 Phone, 2 Fax, 3 Mobile, 4 Email))
Error report:
Unknown Command
La razón de mi problema fue porque mi versión de la base de datos Oracle (Oracle9i) no era compatible con la función PIVOT. Aquí se explica cómo hacerlo de una manera diferente:
SELECT PartyCD
,MAX(DECODE(t.contacttypecd, 1, t.contacttext)) Phone
,MAX(DECODE(t.contacttypecd, 2, t.contacttext)) Fax
,MAX(DECODE(t.contacttypecd, 3, t.contacttext)) Mobile
,MAX(DECODE(t.contacttypecd, 4, t.contacttext)) Email
FROM
(
SELECT partyid, contacttext, contacttypecd
FROM CONTACT
WHERE partyid = 100
) t
GROUP BY PartyID