Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapytanie SQL dla przedziałów czasowych. Błędy składni.

Nie możesz użyć opcji JOIN w ten sposób musisz użyć albo CROSS APPLY lub OUTER APPLY (zakładając SQL Server). Dodaj również długość do varcharów. Teraz spróbuj tego:

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;

Oto demo abyś spróbował.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kopiowanie tabel z danymi do innej bazy danych w SQL Server 2008

  2. Jak zatrzymać kontekst zmienionej bazy danych, aby ... wiadomość?

  3. zapytanie SQL; poziomo do pionu

  4. Jak włączyć kompresję w istniejącej tabeli w SQL Server (T-SQL)

  5. Jak usunąć białe znaki z ciągu znaków w SQL Server