Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL заявка за времеви интервали. Синтактични грешки.

Не можете да използвате JOIN по този начин трябва да използвате CROSS APPLY или OUTER APPLY (приемайки SQL Server). Също така, моля, добавете дължина към varchar. Сега опитайте това:

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;

Ето демонстрация за да опитате.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вътрешни елементи на SQL Server:Планово кеширане, т. II – Прекомпилиране на планове

  2. PHP sqlsrv_connect към SQL Server:Възникна грешка, свързана с мрежата или специфична за екземпляр, при установяване на връзка към SQL Server

  3. T-SQL:Избор на колона въз основа на MAX (друга колона)

  4. Как да промените системната дата по подразбиране от ymd на dmy

  5. SQL Unit Testing Съхранени процедури