2014-12-05 17 views
0

В случае периодов повторения необходимо удалить второе вхождение (от 15 до 15 минут), но запрос всегда возвращает все или ничего.Удалить в цикле SQL Server

DECLARE @DatAteTemp DATE 
DECLARE @HorAteTemp TIME 

DECLARE cursor_i CURSOR FOR 
SELECT DatAte, HorAte 
FROM @TABLE 

OPEN cursor_i 
FETCH NEXT FROM cursor_i INTO @DatAteTemp, @HorAteTemp; 

WHILE @@FETCH_STATUS = 0 
    BEGIN 

     IF (select count(*) from @TABLE where HorAte = DATEADD(MINUTE, -15, @HorAteTemp)) > 0 
     --DATEADD(MINUTE, -15, @HorAteTemp) = @HorAteTemp 
     BEGIN 
      DELETE FROM @TABLE WHERE CURRENT OF cursor_i 
     END 

     FETCH NEXT FROM cursor_i INTO @DatAteTemp, @HorAteTemp 
    END 

CLOSE cursor_i; 
DEALLOCATE cursor_i; 

Другой:

DECLARE @aux TIME = DATEADD(MINUTE, -15, @HorAteTemp) 
IF (select count(*) from @TABLE AS oito where oito.HorAte = @aux) > 0 
+3

Ваше 'состоянии IF' никогда не может быть правдой. Это как сказать «IF X - 15 = X». –

+0

Извините, я отправил неправильный запрос! И этот запрос не удаляет строки. –

ответ

0

никогда не будет ли это возможно, как я применял его как:

SELECT 
[...] 
CROSS APPLY dbo.Function(Dat, Hor) 
[...] 
Смежные вопросы