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

chuyển đến hàng tiếp theo khi một cột chứa giá trị nhất định (sql server 2008)

Có một cách tương đối hiệu quả để xác định xem dữ liệu có chính xác hay không - hầu như là vậy. Nó sẽ xác định xem có thiếu "1" s hoặc "2" trong dữ liệu hay không. Phiên bản này không xác định xem id đầu tiên có phải là "1" hay không, vì câu hỏi của bạn không đề cập đến điều đó.

Giải pháp tốt nhất là sử dụng lag()lead() . Tuy nhiên, SQL Server 2008 không hỗ trợ các chức năng này. Vì vậy, chúng ta hãy tiếp cận điều này như một khoảng trống và những hòn đảo. Có bất kỳ trường hợp nào có nhiều hơn 1 "1" hoặc "2" liên tiếp cho một id nhất định không ? Đoạn mã sau sẽ tìm thấy những điểm bất thường này:

select id, inoutid, count(*) as num_in_row,
from (select t.*,
             row_umber() over (partition by id, inoutid order by date, hours, minute) as seqnum_ii,
             row_umber() over (partition by id order by date, hours, minute) as seqnum_i
      from t
     ) t
group by id, inoutid, (seqnum_i - seqnum_ii)
having count(*) > 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. Lưu trữ một giây nhảy vọt trong SQL Server 2008

  2. Tách một chuỗi rất lớn bằng dấu phân cách tùy chỉnh?

  3. Có thể trả về hàng trống từ Máy chủ Sql không?

  4. Sử dụng OUTPUT sau INSERT để lấy giá trị của cột nhận dạng thành một biến (giá trị không phải bảng)

  5. Làm cách nào tôi có thể hiển thị tất cả thời gian giữa 2 thông số thời gian khác nhau