sql >> Database >  >> RDS >> Oracle

Update met groep op

Uw vraag is een beetje verwarrend. U zegt dat u de waarde b . wilt instellen naar een minimumwaarde van partitie a die kolom b staat in rij met, terwijl de rijen met b = 1 moet onaangeroerd blijven.

Van wat ik in je vraag kan zien als opmerkingen (ik neem aan dat dit je verwachte output is), wil je ook de minimumwaarde krijgen die volgt op 1 binnen een partitie - dus je wilt eigenlijk de minimumwaarde van b dat is groter dan 1 .

Hieronder staat een SQL-query die dit doet

UPDATE t1 alias
  SET b = (
    SELECT min(b) 
    FROM t1 
    WHERE alias.a = t1.a 
      AND t1.b > 1 -- this would get the minimum value higher than 1
    GROUP BY a
  )
  WHERE alias.b > 1 -- update will not affect rows with b <= 1

Uitvoer na update

 a | b 
---+---
 1 | 0
 1 | 1
 2 | 1
 2 | 2
 3 | 1
 3 | 2
 3 | 2
 4 | 1
 4 | 3
 4 | 3
 4 | 3



  1. Python aanroepen vanuit Oracle

  2. De gekoppelde tabelmanager gebruiken in Access 2016

  3. waar moet ik installatiebronnen plaatsen (wxs-bestand, dmg-script, pictogram) en hoe maven antrun te configureren bij het implementeren van een zelfstandige app

  4. Lijst met berekende kolommen in databasetabel ophalen (SQL-server)