Vous ne pouvez pas utiliser le JOIN
comme ça, vous devez utiliser soit CROSS APPLY
ou OUTER APPLY
(en supposant SQL Server). Veuillez également ajouter de la longueur aux varchars. Maintenant, essayez ceci :
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;
Voici une démo à vous d'essayer.