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

Сравнете редовете в таблицата на oracle и актуализирайте съвпадащите

Нетествано, но нещо подобно, използвайки само SQL:

MERGE INTO your_table dst
USING (
  SELECT ROW_NUMBER() OVER (
             PARTITION BY tDate, Product, Price, Quantity, BuySell
             ORDER BY ID
           ) AS idx,
         COUNT( CASE BuySell WHEN 'Buy' THEN 1 END ) OVER (
             PARTITION BY tDate, Product, Price, Quantity
           ) AS num_buy,
         COUNT( CASE BuySell WHEN 'Sell' THEN 1 END ) OVER (
             PARTITION BY tDate, Product, Price, Quantity
           ) AS num_sell
  FROM   your_table
) src
ON ( src.ROWID = dst.ROWID AND src.idx <= LEAST( src.num_buy, src.num_sell ) )
WHEN MATCHED THEN
  UPDATE SET Status = 'Matched';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изберем доставчик на Oracle за .Net приложение?

  2. Oracle използва ли оценка на късо съединение?

  3. Извличане на МНОЖЕСТВО РЕДОВЕ и СЪХРАНЕНИЕ в 1 ПРОМЕНЛИВА - ORACLE СЪХРАНЯВАНА ПРОЦЕДУРА

  4. Индекс с постоянно време за колона с низове в база данни на Oracle

  5. Самоприсъединете се към Oracle с примери