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

CẬP NHẬT SQL trong một thứ hạng CHỌN trên câu phân vùng

Bạn có thể tham gia truy vấn phụ và thực hiện CẬP NHẬT :

UPDATE table_name t2
SET t2.rank=
  SELECT t1.rank FROM(
  SELECT company,
    direction,
    type,
    YEAR,
    MONTH,
    value,
    rank() OVER (PARTITION BY direction, type, YEAR, MONTH ORDER BY value DESC) AS rank
  FROM table_name
  GROUP BY company,
    direction,
    TYPE,
    YEAR,
    MONTH,
    VALUE
  ORDER BY company,
    direction,
    TYPE,
    YEAR,
    MONTH,
    VALUE
  ) t1
WHERE t1.company = t2.company
AND t1.direction = t2.direction;

Thêm các điều kiện bắt buộc vào vị ngữ.

Hoặc,

Bạn có thể sử dụng MERGE và giữ truy vấn đó trong USING mệnh đề:

MERGE INTO table_name t USING
(SELECT company,
  direction,
  TYPE,
  YEAR,
  MONTH,
  VALUE,
  rank() OVER (PARTITION BY direction, TYPE, YEAR, MONTH ORDER BY VALUE DESC) AS rank
FROM table1
GROUP BY company,
  direction,
  TYPE,
  YEAR,
  MONTH,
  VALUE
ORDER BY company,
  direction,
  TYPE,
  YEAR,
  MONTH,
  VALUE
) s 
ON(t.company = s.company AND t.direction = s.direction)
WHEN MATCHED THEN
  UPDATE SET t.rank = s.rank;

Thêm các điều kiện bắt buộc trong điều khoản BẬT.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng boolean trong PL / SQL

  2. Loại trừ các mục theo hồ sơ

  3. Cách tính toán các thay đổi trong Oracle sql

  4. Làm thế nào để lấy tệp từ BLOB trong Oracle?

  5. Các cân nhắc về PreparedStatement, CallableStatement và Performance