sql >> Databasteknik >  >> RDS >> Oracle

Oracle10g SQL pivot

Jag föredrar att använda GROUP BY-lösningen med CASE-uttryck.

SELECT 
    id,
    MAX(CASE WHEN emailRank = 1 THEN email END) AS [1],
    MAX(CASE WHEN emailRank = 2 THEN email END) AS [2],
    MAX(CASE WHEN emailRank = 3 THEN email END) AS [3],
    MAX(CASE WHEN emailRank = 4 THEN email END) AS [4]
FROM (
    SELECT
        id, 
        email, 
        ROW_NUMBER() OVER (PARTITION BY id ORDER BY email) AS emailRank
    FROM TABLE
)
GROUP BY id;

Ursprungliga Pivot-exemplet hade typ och saknade ")". Försök med följande för att få pivot att fungera:

pivot( max(email) FOR emailRank IN (1,2,3));


  1. Hur man ekar ut tabellrader från db (php)

  2. Hur man ersätter null-värden med okänt i Select-sats i SQL Server - SQL Server / TSQL självstudie del 111

  3. För loop exempel i MySQL

  4. REPLACE() Funktion i Oracle