sql >> Databasteknik >  >> RDS >> Oracle

Pivot / Crosstab Query i Oracle 10g (dynamiskt kolumnnummer)

Oracle 11g är den första som stöder PIVOT/UNPIVOT, så du måste använda:

  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

Du kan använda DECODE, men CASE har stöds sedan 9i.



  1. Lyssna på databasändringar i MySQL

  2. Hur man skapar en sekvens i MySQL

  3. Använda DMV ( Dynamic Management View ) och DMF ( Dynamic Management Function ) | SQL Server Performance Felsökning -4

  4. Justera MySQL för att skapa snabb kolumn/index under utveckling