Oracle
 sql >> Base de données >  >> RDS >> Oracle

Requête pivot / tableau croisé dans Oracle 10g (numéro de colonne dynamique)

Oracle 11g est le premier à prendre en charge PIVOT/UNPIVOT, vous devez donc utiliser :

  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

Vous pouvez utiliser DECODE, mais CASE est pris en charge depuis 9i.