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

SQL UPDATE dalam peringkat SELECT di atas kalimat Partisi

Anda dapat bergabung dengan sub-kueri dan lakukan PERBARUI :

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;

Tambahkan kondisi yang diperlukan ke predikat.

Atau,

Anda dapat menggunakan MERGE dan simpan kueri itu di MENGUNAKAN klausa:

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;

Tambahkan kondisi yang diperlukan dalam klausa AKTIF.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. bagaimana cara menggabungkan string?

  2. Oracle DENGAN CLAUSE tidak berfungsi?

  3. Apa cara efektif untuk melacak, mengidentifikasi, dan melaporkan setiap 'pesan kesalahan' yang diajukan oleh aplikasi Anda?

  4. prosedur tersimpan pl/sql:nama parameter sama dengan nama kolom

  5. Pengembang Oracle SQL - tidak ada ocijdbc12 di java.library.path