sql >> Databáze >  >> RDS >> Sqlserver

Sloučení nevyužitých časových úseků

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)

Nejsem si jistý, zda se StaffID a BranchID mohou lišit v tabulce @results, takže možná budete muset toto upravit, pokud mohou.



  1. Ovladač mysql jdbc nepodporuje oddělovače ve spouštěčích s více příkazy

  2. Přidání úvodní nuly k některým hodnotám ve sloupci v MySQL

  3. Převod dat varBinary serveru SQL Server do řetězce C#

  4. Uložená procedura MySQL vs. složitý dotaz