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

Oracle10g SQL pivot

Jeg foretrækker at bruge GROUP BY-løsningen med CASE-udtryk.

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;

Det originale Pivot-eksempel havde typen og manglede ")". Prøv følgende for at få pivot til at virke:

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


  1. Sådan fungerer OBJECTPROPERTY() i SQL Server

  2. A Big Deal:SQL Server 2016 Service Pack 1

  3. Eksempler på formatering af 'datetime offset' i SQL Server ved hjælp af Standard Format Strings (T-SQL)

  4. Få kolonneoplysninger til en tabel eller visning i SQL Server (T-SQL:sp_columns)