SQL Как получить все повторы в течение указанного периода времени - PullRequest
3 голосов
/ 23 ноября 2010

Мой стол выглядит как

int callid not null,
datetime segstart not null,
varchar calling_pty not null

То, что я хочу получить, - это все строки с одинаковым call_pty, которые встречаются более одного раза в день в течение 5 минут друг от друга.

Я так озадачен. Я видел TOP 1, datediff и выбрал следующий и предыдущий примеры строк, но не могу разобраться с этим.

Я использую MS SQL 2005.

Спасибо!

1 Ответ

4 голосов
/ 23 ноября 2010
select t1.callid, t1.segstart, t1.calling_pty
from MyTable t1
inner join MyTable t2 on t1.calling_pty = t2.calling_pty 
    and t1.segstart < t2.segstart
where datediff(mi, t1.segstart, t2.segstart) <= 5 --a difference of 5 minutes 59 secs. still returns 5

Обратите внимание, что, поскольку DATEDIFF подсчитывает количество пересеченных границ даты, оно может быть несколько приблизительным при подсчете минут.Для большей точности вы можете использовать

where datediff(s, t1.segstart, t2.segstart) <= 300 --this looks at difference in seconds, so much nmore accurate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...