Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle10g SQL опорна точка

Предпочитам да използвам решението GROUP BY с израз CASE.

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 имаше тип и липсваше ")". Опитайте следното, за да накарате опората да работи:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Може ли операторът IN да използва заместващи знаци LIKE (%) в Oracle?

  2. Изчислете разликата между 2 дата/часа в Oracle SQL

  3. ORA-01843 не е валиден месец- Сравняване на дати

  4. Инструкция INSERT в Oracle

  5. RDLC LocalReport Експорт в Excel наистина бавен