Oracle
 sql >> Database >  >> RDS >> Oracle

Query pivot/tabella incrociata in Oracle 10g (numero di colonna dinamico)

Oracle 11g è il primo a supportare PIVOT/UNPIVOT, quindi devi utilizzare:

  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

Potresti usare DECODE, ma CASE è supportato dal 9i.