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

Jak wykonać zapytanie w pętli sql, aby sprawdzić różnicę między wartościami?

DECLARE @idFrom as int,
        @idTo as int,
        @gpsDateFrom as datetime,
        @gpsDateTo as datetime
DECLARE VehicleCursor CURSOR FAST_FORWARD FOR 
SELECT  vehicle_gps_id, 
        datetimeCol
FROM    yourtable
ORDER BY vehicle_gps_id
OPEN VehicleCursor FETCH NEXT FROM VehicleCursor INTO @idFrom, @gpsDateFrom
    FETCH NEXT FROM VehicleCursor INTO @idTo, @gpsDateTo
    WHILE @@FETCH_STATUS = 0 BEGIN 
        IF DATEDIFF(MI,@gpsDateFrom,@gpsDateTo) >5
        BEGIN
            --Break (your code here)
        END
        SET @idFrom = @idTo
        SET @gpsDateFrom = @gpsDateTo
        FETCH NEXT FROM VehicleCursor INTO @idTo, @gpsDateTo
    END 
CLOSE VehicleCursor 
DEALLOCATE VehicleCursor

Coś takiego powinno działać dla ciebie. Jest to kursor, który po prostu przechodzi przez wszystkie Twoje kolumny porównując daty i godziny. Możesz wpisać, co chcesz zrobić, w sekcji komentowanej po instrukcji if.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Generowanie pliku XML z SQL Server 2008

  2. Dodaj login i połącz się z SQL za pomocą uwierzytelniania SQL Server

  3. UPDATE lub MERGE bardzo dużych tabel w SQL Server

  4. Wartości NULL wewnątrz klauzuli NOT IN

  5. Zapytanie SQL do pobrania średnich wartości dla jednodniowej przerwy między klientami