Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wybierz tę samą kolumnę dla różnych wartości w innej kolumnie

Nie testowano, ponieważ nie dostarczyłeś danych testowych (z tabeli AC_XXXX ):
(za pomocą klauzuli 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)
      )
;

W przypadku Oracle 10 lub wcześniejszych, obracanie odbywało się „ręcznie”, tak jak poniżej:

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'
;

Lub emp_id nie musi znajdować się w max() jeśli dodamy group by emp_id - które wtedy będzie działać nawet bez klauzuli WHERE, w przypadku innego, ale powiązanego pytania.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmień datę wygaśnięcia hasła użytkownika Oracle

  2. Połącz według klauzuli, aby uzyskać szczyt hierarchii

  3. Optymalizacja kodu w PL/SQL. Dokonywanie tego do właściwego. Kod działa, ale nie jest prawidłowy

  4. Zwróć wiele wartości z funkcji Oracle

  5. Czy mogę użyć VBA do przekazania hasła do połączenia z zewnętrzną bazą danych w programie Excel?