Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Обединяване на неизползвани времеви интервали

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)

Не съм сигурен дали StaffID и BranchID могат да варират в таблицата @results, така че може да се наложи да промените това, ако могат.



  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:Неправилен синтаксис близо до ключовата дума „с“. Ако това изявление е израз на обща таблица

  2. TOP забавя заявката

  3. SQL 2008 R2 - Тригери, базирани на времето?

  4. Как да свържете текста, когато групирате по определена колона в SQL Server

  5. Преименувайте чужд ключ в SQL Server с помощта на T-SQL