sql >> Databasteknik >  >> RDS >> Sqlserver

Slår ihop oanvända tidsluckor

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)

Jag är inte säker på om StaffID och BranchID kan variera i @results-tabellen, så du kan behöva justera detta om de kan.



  1. Hur sparar man denna sträng i PHP?

  2. uppdatera rad automatiskt efter en viss tid

  3. Hur får man en självstängande xml-tagg i Oracle PLSQL?

  4. Hur POSITION()-funktionen fungerar i MySQL