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ử.