Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cập nhật với nhóm của

Câu hỏi của bạn hơi khó hiểu, bạn nói rằng bạn muốn đặt giá trị b đến giá trị tối thiểu từ phân vùng a cột đó b liên tiếp với, trong khi các hàng chứa b = 1 nên được giữ nguyên.

Từ những gì tôi có thể thấy trong câu hỏi của bạn dưới dạng nhận xét (tôi cho rằng đó là kết quả mong đợi của bạn), bạn cũng muốn nhận được giá trị nhỏ nhất theo sau 1 trong một phân vùng - vì vậy về cơ bản bạn muốn giá trị nhỏ nhất của b lớn hơn 1 .

Dưới đây là truy vấn SQL thực hiện điều này

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

Đầu ra sau khi cập nhật

 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. UNPIVOT trên nhiều cột để trả về nhiều cột

  2. Oracle db Tham gia so với FROM a, b, c

  3. Làm thế nào để thay đổi giá trị âm thành dương trong Oracle?

  4. Nhầm lẫn với Oracle CONNECT BY

  5. Chạy Lệnh nhập Oracle từ Java và xem đầu ra của Bảng điều khiển