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

Zaktualizuj za pomocą grupy według

Twoje pytanie jest nieco mylące.Mówisz, że chcesz ustawić wartość b do minimalnej wartości z partycji a ta kolumna b jest w wierszu z, podczas gdy wiersze zawierające b = 1 powinien pozostać nietknięty.

Z tego, co widzę w twoim pytaniu jako komentarze (zakładam, że jest to oczekiwany wynik), chcesz również uzyskać minimalną wartość, która następuje po 1 wewnątrz partycji - więc zasadniczo potrzebujesz minimalnej wartości b to jest większe niż 1 .

Poniżej znajduje się zapytanie SQL, które to robi

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

Dane wyjściowe po aktualizacji

 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego nieprawidłowa konwersja zażądała KODU BŁĘDU:17132?

  2. Jak uruchomić inny sql, aby uzyskać dane zgodnie z poprzednimi danymi wejściowymi w czajniku pentaho?

  3. Jak wybrać z kolumny typu obiektu w Oracle 11g?

  4. Czy mogę zainstalować JDK 1.6 zamiast domyślnego JDK 1.3 bazy danych Oracle?

  5. dwie kolumny Pivoting w Oracle SQL