Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL АКТУАЛИЗАЦИЯ в SELECT ранг над изречение Partition

Можете да се присъедините към подзаявката и направете АКТУАЛИЗАЦИЯ :

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;

Добавете необходимите условия към предиката.

Или,

Можете да използвате ОБЕДИВАНЕ и запазете тази заявка в USING клауза:

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;

Добавете необходимите условия в клаузата 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. В SQL сървър как мога да направя заявка за колона с времеви печат на Oracle през свързана сървърна връзка?

  2. Вмъкнете UTC/GMT дата в база данни на Oracle с Java и Spring

  3. Oracle Dynamic Pivoting

  4. Web Site Down и Twitter Feed

  5. Произволен ли е ORA_HASH на Oracle?