Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle10g SQL pivot

Tôi thích sử dụng giải pháp GROUP BY với biểu thức 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;

Ví dụ về Pivot ban đầu có loại và bị thiếu ")". Hãy thử những cách sau để trục hoạt động:

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. Làm thế nào để lấy BLOB từ tệp trong PL / SQL?

  2. Làm thế nào để quản lý tốt nhất các giá trị tra cứu lịch sử trong cơ sở dữ liệu?

  3. Tách chuỗi được phân tách bằng dấu phẩy trong một chương trình được lưu trữ PL / SQL

  4. Giải pháp cho ORA-00997:sử dụng bất hợp pháp kiểu dữ liệu LONG

  5. Chọn hàng đầu tiên của mỗi nhóm trong sql