sql >> Database teknologi >  >> RDS >> Sqlserver

Få seneste dato før dato værdi i rækken

Du kan bruge YDRE APPLY . Det er som en korreleret underforespørgsel, men tillader flere kolonner:

SELECT  p.ID, 
        p.Patient,
        p.ProcedureType,
        p.ProcedureDate,
        [LastExamDate] = exam.ProcedureDate, 
        [DaysSinceLastExam] = DATEDIFF(DAY, exam.ProcedureDate, p.ProcedureDate),
        [LastExamType] = exam.ProcedureType 
FROM    Procedures p
        OUTER APPLY
        (   SELECT  TOP 1 exams.ProcedureType, exams.ProcedureDate
            FROM    Procedures exams
            WHERE   Exams.ProcedureType LIKE '%Exam%'
            AND     Exams.Patient = p.Patient
            AND     Exams.ProcedureDate <= p.ProcedureDate
            ORDER BY Exams.ProcedureDate DESC
        ) exam;

Eksempel på SQL Fiddle



  1. Flet/kombiner flere PDF-filer til én PDF i Oracle ved hjælp af PLPDF_TOOLKIT PL/SQL-pakke

  2. Gør Oracle last_day-funktionen kompatibel med H2-databasen

  3. Sådan dræber du alle aktive og inaktive oracle-sessioner for brugeren

  4. Mysql forespørger på to tabeller og få data i datomæssigt eller brugermæssigt