Oracle
 sql >> Baza danych >  >> RDS >> Oracle

SQL UPDATE w pozycji SELECT nad zdaniem partycji

Możesz dołączyć do podzapytania i wykonaj AKTUALIZACJĘ :

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;

Dodaj wymagane warunki do predykatu.

Lub

Możesz użyć MERGE i zachowaj to zapytanie w USING klauzula:

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;

Dodaj wymagane warunki w klauzuli ON.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przetestować procedurę składowaną Oracle z typem zwrotu RefCursor?

  2. Jak wyeksportować puste tabele w Oracle?

  3. Jak korzystać z tabel Oracle PLSQL (tablica asocjacyjna lub tabela indeksowana)

  4. Generuj DDL za pomocą Oracle Sql Developer, aby uwzględnić klucze obce

  5. Nie można skompilować PL/SQL za pomocą BULK COLLECT i FORALL