Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Pobierz ostatnią datę przed wartością daty w wierszu

Możesz użyć ZASTOSOWANIE ZEWNĘTRZNE . Jest to podobne do skorelowanego podzapytania, ale dopuszcza wiele kolumn:

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;

Przykład dotyczący SQL Fiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podłączanie RStudio do SQL Server

  2. Jak dołączyć trzecią tabelę w mojej instrukcji SQL, która zwraca LICZBA bez utraty elementów licznika 0?

  3. jak podzielić łańcuch na spację w SQL

  4. Znajdź i usuń powtarzające się podciągi

  5. Konwertuj Int na pole daty