Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Adakah yang bisa menjelaskan Query ini?

Pada dasarnya dia melepaskan data menggunakan 3 pernyataan pilih (1 untuk setiap atribut) dan UNION mereka bersama-sama untuk membuat ekspresi tabel umum sehingga dia mendapatkan baris untuk setiap atribut karyawan.

select employeeId, department, attribute1, 1 rn from employees union all
select employeeId, department, attribute2, 2 rn from employees union all
select employeeId, department, attribute3, 3 rn from employees

Tabel lain dia menggunakan fungsi jendela untuk menetapkan nomor ke atribut, departemen. Dia menggunakan nomor ini nanti untuk bergabung kembali ke datanya yang belum di-pivot. Dia memposting kodenya untuk contoh.

select a.*, row_number() over (partition by department order by attributeID) rn
  from attributes a

Saya sarankan Anda menggunakan contoh data yang dia berikan dan jalankan yang berikut ini. Ini akan menunjukkan kepada Anda CTE. Saya pikir begitu Anda melihat data itu, itu akan lebih masuk akal.

with a as (
select a.*, row_number() over (partition by department order by attributeID) rn
  from attributes a),
e as (
select employeeId, department, attribute1, 1 rn from employees union all
select employeeId, department, attribute2, 2 rn from employees union all
select employeeId, department, attribute3, 3 rn from employees
)

SELECT * from a
SELECT * from e



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengecualian Koneksi ODP.NET

  2. Mengembalikan kursor ref Oracle dan menambahkan beberapa hasil

  3. Oracle:Akses baca-saja ke skema untuk pengguna lain?

  4. ketika memasukkan karakter persia di Oracle db saya melihat tanda tanya

  5. mendapatkan kesalahan ORA-00907 saat membuat tabel di pengembang sql