sql >> Databasteknik >  >> RDS >> Sqlserver

SQL-fråga för tidsintervall. Syntaxfel.

Du kan inte använda JOIN som det, måste du använda antingen CROSS APPLY eller OUTER APPLY (förutsatt SQL Server). Lägg också till längd till varchars. Prova nu detta:

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;

Här är en demo för dig att prova.



  1. PHP - hämta data från db till JSON

  2. mysql2 gem misslyckas med att kompilera med MySQL 5.6.12 på OS X med Homebrew

  3. Hur letar man efter poster som är äldre än idag i PHP?

  4. PDO IN() Array Statement OCH en platshållare