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

Porównaj wiersze w tabeli Oracle i zaktualizuj pasujące

Nieprzetestowane, ale coś takiego przy użyciu tylko 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. Wyzwalacz, który wstawia wiersz do tabeli dziennika podczas wstawiania lub usuwania w tabeli osób skompilowanej z błędami

  2. Wyrażenie regularne Oracle dzieli ciąg znaków z ostatniego wystąpienia

  3. Wstaw datę UTC/GMT do bazy danych Oracle za pomocą Java i Spring

  4. Oracle automatycznie dodaje bieżącą datę

  5. Nie można zarejestrować się w transakcji