sql >> Base de Datos >  >> RDS >> Oracle

Pivot / Crosstab Query en Oracle 10g (número de columna dinámica)

Oracle 11g es el primero en admitir PIVOT/UNPIVOT, por lo que debe usar:

  SELECT t.username,
         MAX(CASE WHEN t.product = 'Chair' THEN t.numberpurchases ELSE NULL END) AS chair,
         MAX(CASE WHEN t.product = 'Table' THEN t.numberpurchases ELSE NULL END) AS tbl,
         MAX(CASE WHEN t.product = 'Bed' THEN t.numberpurchases ELSE NULL END) AS bed
    FROM TABLE t
GROUP BY t.username

Podría usar DECODE, pero CASE es compatible desde 9i.