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

Chọn cùng một cột cho các giá trị khác nhau trên một cột khác

Không được kiểm tra vì bạn không cung cấp dữ liệu kiểm tra (từ bảng AC_XXXX ):
(sử dụng mệnh đề PIVOT của Oracle 11)

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

Đối với Oracle 10 trở về trước, việc xoay vòng được thực hiện "bằng tay", như sau:

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

Hoặc, emp_id không cần nằm trong max() nếu chúng tôi thêm nhóm group by emp_id - sau đó sẽ hoạt động ngay cả khi không có mệnh đề WHERE, cho một câu hỏi khác nhưng có liên quan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cố gắng hiểu over () và phân vùng theo

  2. TNS-12505:TNS:người nghe hiện không biết về SID được cung cấp trong bộ mô tả kết nối

  3. Tạo trình kích hoạt trong Oracle Express

  4. RU hay RUR?

  5. Hành vi kỳ lạ của lệnh LENGTH - ORACLE