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

Изберете същата колона за различни стойности в различна колона

Не е тествано, тъй като не предоставихте тестови данни (от таблица AC_XXXX ):
(с помощта на клауза Oracle 11 PIVOT)

select *
from   ( select emp_id, seq_nr, name
         from   ac_xxxx
         where  emp_id = '874830' )
pivot ( max(name) for seq_nr in (3 as seq3name, 4 as seq4name, 21 as seq21name,
                      22 as seq22name, 23 as seq23name, 24 as seq24name, 25 as seq25name)
      )
;

За Oracle 10 или по-стари, завъртането се извършваше „на ръка“, така:

select max(emp_id) as emp_id,               --  Corrected based on comment from OP
       max(case when seq_nr = 3 then name end) as seq3name,
       max(case when seq_nr = 4 then name end) as seq4name,
    --   etc. (similar expressions for the other seq_nr)
from   ac_xxxx
where  emp_id = '874830'
;

Или emp_id не е необходимо да е в рамките на max() ако добавим group by emp_id - което след това ще работи дори без клаузата WHERE, за различен, но свързан въпрос.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. използване или в клауза where за тип колона за дата проблем при сравнение със sysdate в Oracle

  2. Регионът на часовата зона не е намерен

  3. Oracle SQL Developer:как да видите резултатите от референтен курсор?

  4. Активиране на TLS в R12.1

  5. EF 4, как да добавя частични класове