sql >> Databasteknik >  >> RDS >> Sqlserver

Hur gör man en sql loop-fråga för att kontrollera skillnaden mellan värden?

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

Något sådant här borde fungera för dig. Det är en markör som bara går igenom alla dina kolumner och jämför datum och tider. Du kan skriva in vad du vill göra i det kommenterade avsnittet efter if-satsen.




  1. Finns det något sätt att tvinga OracleCommand.BindByName att vara sant som standard för ODP.NET?

  2. Komma igång Justera prestanda i Azure SQL Database

  3. Så här fixar du "Procedur förväntar sig parametern '@statement' av typen 'ntext/nchar/nvarchar'." Fel i SQL Server

  4. Flera frågedata i en enda HTML-tabell (PHP, Mysql) array skrivs inte ut i rätt position?