Это запрос: (как правило, этот запрос для обнаружения двойной записи в таблице, но, вероятно, удовлетворить ваш спрос).
select value, result, count(value) as [Result Sum]
from @temp
where result = 1
group by value, result
having count(value) >3
Это результат
value result Result Sum
----- ----------- -----------
A 1 4
ОБНОВЛЕНО:
Это пример данных в моей временной таблицы (@temp)
value result
----- -----------
A 1
A 1
A 1
A 0
A 1
D 1
D 1
D 1
D 1
B 1
B 1
C 1
C 1
C 1
C 1
Из примера данных C и D являются действительными значениями
Declare @temp2 table
(
value nvarchar(5)
)
declare @value nvarchar(5), @result int, @total int, @flag bit, @tempValue nvarchar(5)
DECLARE myCursor CURSOR FOR
SELECT value, result
FROM @temp
set @flag = 1
set @tempValue = ''
OPEN myCursor;
FETCH NEXT FROM myCursor into @value, @result;
WHILE @@FETCH_STATUS = 0
BEGIN
--logic here
if (@tempValue <> @value and @result = 1) or @flag = 1
begin
set @tempValue = @value
set @total = 1
set @flag = 0
end
else [email protected] = @value
begin
if @result = 1
set @total = @total + 1
else [email protected] = 0
set @flag = 1
if @total >3 --valid value has reached 4 consecutive result =1
begin
set @flag = 1
insert into @temp2 values (@value)
end
end
FETCH NEXT FROM myCursor into @value, @result;
END;
CLOSE myCursor;
DEALLOCATE myCursor;
select * from @temp2
Это результат выполнения цикла (таблица @ Temp2)
value
-----
D
C
(2 row(s) affected)
"подряд" в соответствии с предписанием, что? В таблице нет упорядочивания строк по умолчанию. –
последовательный заказ по дате –