Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Nhận ngày mới nhất trước giá trị ngày trong hàng

Bạn có thể sử dụng ĐĂNG KÝ NGOÀI TRỜI . Nó giống như một truy vấn con tương quan nhưng cho phép nhiều cột:

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;

Ví dụ trên 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. Có cách nào để truy xuất định nghĩa dạng xem từ SQL Server bằng ADO thuần túy không?

  2. Cách tìm vị trí tệp mặc định cho tệp dữ liệu và tệp nhật ký trong SQL Server

  3. Trả lại tất cả các hàng từ một phân vùng cụ thể trong SQL Server (T-SQL)

  4. Làm thế nào để tìm tên đăng nhập, tên người dùng cơ sở dữ liệu hoặc vai trò của người dùng miền sqlserver không có thông tin đăng nhập của riêng họ?

  5. Sự khác biệt giữa quy trình EXEC và sp_executesql?