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

Hợp nhất các khoảng thời gian không sử dụng

select 
    StaffId,
    BranchId,
    MIN(StartTime),
    MAX(EndTime),
    PatientId
from
(
select *,       
    ROW_NUMBER() over (order by starttime) 
      - ROW_NUMBER() over (partition by isnull(PatientID,-1) order by starttime) rn     
from @results
) v
group by staffid, branchid, patientid, rn
order by MIN (starttime)

Tôi không chắc liệu StaffID và BranchID có thể khác nhau trong bảng @results hay không, vì vậy bạn có thể cần phải điều chỉnh điều này nếu chúng có thể.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2005 lỗi khi nhóm bằng truy vấn con

  2. Yêu cầu Ajax tới máy chủ SQL sẽ mở ra quá nhiều kết nối được gộp chung

  3. Kết hợp hai bảng không có trường chung

  4. Chọn các hàng có giá trị cột đã thay đổi

  5. Tại sao (và cách) chia cột bằng cách sử dụng master..spt_values?