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

Unpivot on view không hoạt động trong Oracle

Như Aleksej đã nói - nó sẽ không hoạt động trên phiên bản máy chủ Oracle <11g.

Vì vậy, đây là một cách tiếp cận cũ và hơi "khó chịu" ...

select key, c1, c2, c3 from t order by key ;

KEY C1    C2    C3
--- ----- ----- -----
r1  v1    v2    v3
r2  v1    v2
r3  v1          v3
r4  v1
r5        v2    v3
r6        v2
r7              v3
r8

Chúng ta có thể chuyển đổi từng hàng giá trị C1, C2 và C3 thành ba hàng giá trị dưới một cột duy nhất như sau.

break on key skip 1 duplicates
select key, 'C1' as source, c1 as val from t union all
select key, 'C2' as source, c2 as val from t union all
select key, 'C3' as source, c3 as val from t
order by key, source ;

KEY SOURCE VAL
--- ------ -----
r1  C1     v1
r1  C2     v2
r1  C3     v3
r2  C1     v1
r2  C2     v2
r2  C3
r3  C1     v1
r3  C2
r3  C3     v3
r4  C1     v1
r4  C2
r4  C3
r5  C1
r5  C2     v2
r5  C3     v3
r6  C1
r6  C2     v2
r6  C3
r7  C1
r7  C2
r7  C3     v3
r8  C1
r8  C2
r8  C3

Nếu chúng ta không cần các hàng có giá trị NULL từ C1, C2 hoặc C3, chúng ta có thể sử dụng mệnh đề WHERE để lọc chúng.

select key, 'C1' as source, c1 as val from t where c1 is not null union all
select key, 'C2' as source, c2 as val from t where c2 is not null union all
select key, 'C3' as source, c3 as val from t where c3 is not null
order by key, source ;

KEY SOURCE VAL
--- ------ -----
r1  C1     v1
r1  C2     v2
r1  C3     v3
r2  C1     v1
r2  C2     v2
r3  C1     v1
r3  C3     v3
r4  C1     v1
r5  C2     v2
r5  C3     v3
r6  C2     v2
r7  C3     v3

(c) http://oracle-knowledgeshare.blogspot. de




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle - ORA-06502:PL / SQL:lỗi số hoặc giá trị (DBMS_OUTPUT)

  2. Nội dung kỹ thuật và văn bản Oracle

  3. Oracle:Số ngày giữa hai ngày và Loại trừ các ngày trong tuần cách xử lý số âm

  4. Cách xóa kết nối cơ sở dữ liệu không hợp lệ khỏi nhóm

  5. làm thế nào để kích hoạt cập nhật giá trị hàng trong bảng bằng cách sử dụng giá trị hàng từ một bảng khác trong Apex Oracle SQL?