2015-05-13 2 views
1

У меня есть список записей (транзакций).Как найти две строки, где значение поля равно x, а вторая строка - x + 1

Я хочу иметь возможность ТОЛЬКО включать строки, где номера транзакций имеют последовательное значение +1. Даже не уверен, с чего начать, чтобы он перечислил ТОЛЬКО эти транзакции. У меня есть работа, чтобы последовательно перечислять все транзакции, но не изолировать только значения транзакций, плюс их + 1 транзакцию. (обратите внимание, что не все значения транзакций являются последовательными).

Например,

Если поле А имеет значения 1,2,4,7,8,10 Я хочу сценарий, чтобы просто список 1,2,7,8 как результаты.

Заранее спасибо.

ответ

0

вы можете попробовать что-то вроде этого:

select * from table as t1 
where exists (
    select * from table as t2 
    where t2.A = t1.A-1 or t2.A = t1.A+1 
) 
order by t1.A 
+0

Это именно то, что мне нужно, Lashane. Спасибо! – DJDJ23

+0

Убедитесь, что у вашей таблицы нет значений, например 3,2,1,4,5 – Tim3880

+0

@ Tim3880, почему это будет проблемой? –

1

Вы хотите группы, по крайней мере, двух последовательных значений?

SELECT * FROM tab 
QUALIFY 
    MIN(a) OVER (ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) = a - 1 
OR MIN(a) OVER (ORDER BY a ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) = a + 1 
Смежные вопросы