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

Nhận giá trị tối thiểu tiếp theo, lớn hơn hoặc bằng một giá trị nhất định cho mỗi nhóm

Bảng có nguồn gốc a truy xuất các giá trị tối thiểu từ bảng 1 đã cho refidintVal từ bảng2; truy vấn bên ngoài chỉ truy xuất someValue.

select a.refid, a.intVal, a.nextGt, table1.SomeVal
from
(
    select table2.refid, table2.intval, min (table1.intVal) nextGt
      from table2
      left join table1
        on table2.refid = table1.refid
       and table2.intVal <= table1.intVal
     group by table2.refid, table2.intval
) a
-- table1 is joined again to retrieve SomeVal 
left join table1
  on a.refid = table1.refid
 and a.nextGt = table1.intVal

Đây là Sql Fiddle với thử nghiệm trực tiếp .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. thay thế NULL bằng giá trị trống hoặc 0 trong máy chủ sql

  2. Câu lệnh SQL để chọn từ 2 bảng khác nhau, từ hai cơ sở dữ liệu khác nhau (cùng một máy chủ)

  3. Giải pháp cho:Cập nhật cửa hàng, chèn hoặc xóa câu lệnh ảnh hưởng đến một số hàng không mong muốn (0)

  4. Có thể đồng bộ hóa thời gian thực 2 cơ sở dữ liệu SQL Server không

  5. Kích hoạt SQL Server - thứ tự thực thi