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

Truy vấn SQL cho các khoảng thời gian. Lỗi cú pháp.

Bạn không thể sử dụng JOIN như vậy, bạn cần sử dụng CROSS APPLY hoặc OUTER APPLY (giả sử SQL Server). Ngoài ra, hãy thêm chiều dài vào varchars. Bây giờ, hãy thử điều này:

SELECT r.user_id, r.reading_time start_time, rm.reading_time end_time, 
       (CONVERT(varchar(10), r.x)+' ; '+CONVERT(varchar(10), r.y)) start_point, 
       (CONVERT(varchar(10), rm.x)+' ; '+CONVERT(varchar(10), rm.y)) end_point 
FROM Readings r 
OUTER APPLY (SELECT TOP 1 r2.user_id, r2.reading_time, r2.x, r2.y
             FROM Readings r2
             WHERE r2.user_id=r.user_id and 
                   r2.reading_time < r.reading_time
             ORDER BY r2.reading_time desc) rm 
ORDER BY 1,2 desc;

Đây là bản trình diễn để bạn thử.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể đăng ký phiên bản mặc định MSSQLSERVER trong SQL Server 2008

  2. Làm thế nào để sao lưu cơ sở dữ liệu vào một PC khác trong Sql Server 2008?

  3. Xử lý các giá trị không tồn tại trong biểu thức truy vấn sql cho biểu đồ ssrs

  4. SQL Server tương đương với PostgreSQL khác biệt trên ()

  5. Lập trình tạo tập lệnh cho tất cả các đối tượng trong cơ sở dữ liệu