sql >> Database teknologi >  >> RDS >> Oracle

Oracle 10g PL/SQL- Vælg resultater som opdateringskolonneværdier

Jeg vil begrænse min kritik til at sige, at dit borddesign ikke er normaliseret og ikke er særlig smukt, men jeg går ud fra, at du har dine grunde. Jeg laver typisk disse "rotations"-forespørgsler ved at bruge DECODE kombineret med en samlet kolonne, gruppering efter min nøgle - i dette tilfælde din pseudo-nøgle, trunc(ID/100). Kombiner det med opdateringssyntaksen, der bruger tupler:

 UPDATE Foo
    SET (a, b, c, d)
      = (w, x, y, z);
 

og du får:

UPDATE KeyMap SET ( key1 , key2 , key3 , key4 ... , key99 ) = ( SELECT MAX(decode(mod(ID, 100), 1, Key, NULL)) , MAX(decode(mod(ID, 100), 2, Key, NULL)) , MAX(decode(mod(ID, 100), 3, Key, NULL)) , MAX(decode(mod(ID, 100), 4, Key, NULL)) ... , MAX(decode(mod(ID, 100), 99, Key, NULL)) FROM Source WHERE Trunc(Source.ID / 100) = KeyMap.batchId GROUP BY Trunc(Source.ID / 100) ) WHERE BatchId = <x>;

  1. SQL Server-isolationsniveauer:A-serie

  2. Om V-formatelementet i Oracle

  3. hvordan man automatisk justerer cellebredden i fpdf ved hjælp af php og mysql

  4. Sådan fungerer Time()-funktionen i SQLite