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

Unpivot on view не работи в Oracle

Както Алексей вече каза - няма да работи на версията на сървъра на Oracle <11g.

Ето един стар и малко "гаден" подход...

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

Можем да преобразуваме всеки ред от стойности C1, C2 и C3 в три реда стойности под една колона, както следва.

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

Ако не се нуждаем от редове с NULL стойности от C1, C2 или C3, можем да използваме клаузите WHERE, за да ги филтрираме.

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. Потребителско дефинирана рутина с DBMS_STATS, част II

  2. Празен RELIES_ON за RESULT_CACHE

  3. Dynamic Select SQL изрази с MyBatis

  4. Oracle предоставя ли вградена валутна таблица, която да използвам като ограничения?

  5. Кога да използвате подсказки в заявка за оракул