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

Bất cứ ai có thể giải thích truy vấn này?

Về cơ bản, anh ấy đã giải nén dữ liệu bằng cách sử dụng 3 câu lệnh chọn (1 cho mỗi thuộc tính) và UNION chúng cùng nhau để tạo một biểu thức bảng chung để anh ta nhận được các hàng cho mỗi thuộc tính nhân viên.

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

Bảng còn lại anh ta sử dụng một hàm cửa sổ để gán một số cho thuộc tính, bộ phận. Anh ấy sử dụng số này sau đó để kết nối lại với dữ liệu chưa được chia nhỏ của mình. Anh ấy đã đăng mã của mình để làm ví dụ.

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

Tôi đề nghị bạn sử dụng dữ liệu mẫu của anh ấy mà anh ấy cung cấp và chạy như sau. Điều này sẽ hiển thị cho bạn các CTE. Tôi nghĩ một khi bạn nhìn thấy dữ liệu đó, nó sẽ có ý nghĩa hơn.

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. Công việc Giám đốc Doanh nghiệp Oracle là Hùng

  2. ORACLE SQL:Lấy tất cả các số nguyên giữa hai số

  3. Cố gắng xuất một Oracle qua PL / SQL sẽ đưa ra ngày từ 0000-00-00

  4. Lỗi thời gian chạy không xác định trong khi thực thi tập lệnh vba

  5. SQLException:Không tìm thấy trình điều khiển phù hợp cho jdbc:oracle:thin:@ // localhost:1521 / orcl