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

Оператор на въртене на Oracle

Получавате изхода по този начин, просто защото издавате select изявление срещу таблица (вашият tbl таблица), която вероятно съдържа колона (например колона с първичен ключ), която уникално идентифицира ред и pivot операторът взема предвид стойностите на тази колона. Ето един прост пример:

/*assume it's your table tbl */
with tbl(unique_col, col1, col2) as(
  select 1, 'a',  'a1' from dual union all
  select 2, 'b',  'b1' from dual union all
  select 3, 'c',  'c1' from dual
)

Запитване към такава таблица ще ви даде този изход (нежелан изход), който сте предоставили във въпроса:

select A,B 
  from tbl
pivot(
  max(col2) for col1 in ('a' as A,'b' as B)
)

Резултат:

A    B
--   --
a1   null   
null b1

За да произведете желания изход, трябва да изключите колоната с уникална стойност за ред:

select A
     , B 
  from (select col1 
             , col2  /*selecting only those columns we are interested in*/
           from tbl ) 
  pivot(
    max(col2) for col1 in ('a' as A,'b' as B)
  )

Резултат:

A  B
-- --
a1 b1 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Функция ROWIDTOCHAR() в Oracle

  2. 2 функции, които получават деня, месеца и годината от дата в Oracle

  3. Как мога да направя пакетно вмъкване в база данни на Oracle с помощта на Python?

  4. SQLDeveloper не показва таблици под връзки, където пише таблици

  5. Търсене във всички полета във всички таблици за конкретна стойност (Oracle)