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

Xác định tập hợp con các bản ghi dựa trên ngày và quy tắc trong SQL Server

Bạn có thể sử dụng LAG()LEAD() chức năng phân tích:

SELECT * FROM (
    SELECT t.*,
           LAG(t.linked,1,0) OVER(ORDER BY t.FromDate DESC) as rnk_1, --Next one
           LEAD(t.linked,1,0) OVER(ORDER BY t.FromDate DESC) as rnk_2, -- Last one,
           LEAD(t.linked,2,0) OVER(ORDER BY t.FromDate DESC) as rnk_3 -- Last two,
    FROM YourTable t) s
WHERE ((s.rnk_1 = 1 OR s.rnk_2 = 1) AND s.linked = 1) OR 
      (s.rnk_2 = 1 and s.rnk_3 = 1 and s.linked = 0)
ORDER BY s.FromDate DESC

Điều này sẽ dẫn đến các bản ghi có linked = 1 và bản ghi trước / sau cũng là 1.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉnh sửa phức tạp trên chế độ xem lưới trong C #

  2. SQL Server INFORMATION_SCHEMA Lượt xem | Xem nếu một bảng tồn tại

  3. Triển khai phân trang bằng cách sử dụng OFFSET FETCH NEXT trong SQL Server

  4. SQL Server:sử dụng tham số trong TẠO CƠ SỞ DỮ LIỆU

  5. Nhập cột bảng tính Excel vào cơ sở dữ liệu SQL Server