sql >> Databáze >  >> RDS >> Oracle

SQL UPDATE v hodnosti SELECT nad větou oddílu

Můžete se připojit k poddotazu a proveďte AKTUALIZACI :

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;

Přidejte k predikátu požadované podmínky.

Nebo,

Můžete použít SLOUČENÍ a ponechte tento dotaz v POUŽÍVÁNÍ klauzule:

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;

Přidejte požadované podmínky do klauzule ON.



  1. Jak funguje něco OR DIE() v PHP?

  2. jak rozdělit a vložit data CSV do nové tabulky v jediném příkazu?

  3. From Now() to Current_timestamp v Postgresql

  4. Oracle šifruje/dešifruje clob