sql >> データベース >  >> RDS >> Oracle

Oracle10gSQLピボット

    CASE式でGROUPBYソリューションを使用することを好みます。

    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;
    

    元のピボットの例には、タイプがあり、「)」がありませんでした。ピボットを機能させるには、次のことを試してください。

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


    1. JoomlaSQLインジェクションの脆弱性

    2. 値がMySQLの数値であるかどうかを検出します

    3. SQLServerの2つの異なるサーバーからデータを選択する

    4. PostgresのGeneratedValue