sql >> Database >  >> RDS >> Sqlserver

Ontvang de laatste datum vóór de datumwaarde in de rij

U kunt OUTER APPLY gebruiken . Het is als een gecorreleerde subquery maar staat meerdere kolommen toe:

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;

Voorbeeld op SQL Fiddle



  1. Kolom bijwerken met gemiddelde berekening

  2. Code-first dwingen om altijd een niet-bestaande database te initialiseren?

  3. Inleiding tot SQL

  4. Een deelnameweergave bijwerken zonder een niet-sleutelbewaarde fout te krijgen