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

Porovnejte řádky v tabulce Oracle a aktualizujte odpovídající

Netestováno, ale něco takového používá pouze 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. SqlFunction se nezdaří otevřít kontextové připojení navzdory přítomnosti DataAccessKind.Read

  2. Optimalizace dotazů v PostgreSQL. Základy VYSVĚTLENÍ – 3. část

  3. mysqldump test zamykacích tabulek

  4. SQLAlchemy s výchozí datovou třídou nenaplňuje postgresovou databázi