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

Truy vấn SQL để nhóm các mục theo thời gian, nhưng chỉ khi gần nhau?

Đây được gọi là "vấn đề quần đảo" và tôi đã xem đây là một giải pháp (ghi nhận Itzik Ben Gan)

select  tool_number,
        min(time) 'in',
        max(time) 'out',
        count(*)
from    (
    select  tool_number,
            time,
            ROW_NUMBER() OVER (ORDER BY time) - ROW_NUMBER() OVER (PARTITION BY Tool_Number ORDER BY time) AS Grp
    from    #temp
    ) as a
group by grp, tool_number
order by min(time)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển Danh sách các chuỗi vào một thủ tục được lưu trữ

  2. Trợ giúp kích hoạt máy chủ sql - cùng một bảng cập nhật

  3. Làm thế nào để bạn truy vấn một cột int cho bất kỳ giá trị nào?

  4. Xác định ngưỡng nâng cấp khóa

  5. cách định cấu hình sử dụng bộ nhớ tối đa của SQL Server