2010-11-23 16 views
3

Meine Tabelle sieht alle Wiederholungen erhalten mögenSQL Wie innerhalb eines bestimmten Zeitraums

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

Was will ich alle Zeilen mit dem gleichen CALLING_PTY erhalten sind, die innerhalb von 5 Minuten von ihnen pro Tag mehr als einmal vorkommen .

Ich bin so stumpted. Ich habe die TOP 1, datediff, gesehen und wähle nächste und vorherige Zeile Beispiele, aber ich kann diese nicht arbeiten.

Ich benutze MS SQL 2005.

Vielen Dank!

Antwort

4
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 

Beachten Sie, dass seit DATEDIFF zählt Anzahl von Datum Grenzen überschreitet, kann es etwas ungefähre sein, wenn Minuten zu zählen. Für bessere Genauigkeit, möchten Sie vielleicht

where datediff(s, t1.segstart, t2.segstart) <= 300 --this looks at difference in seconds, so much nmore accurate 
+0

Awesome das fast funktioniert! Das seltsame Ding ist das erste Ergebnis erscheint auch als das letzte, so dass es ein Duplikat ist. – CodingIsAwesome

+0

@CodingIsAwesome: versuche, '<>' in '<' zu ändern. – RedFilter

+0

Perfekte Antwort danke! – CodingIsAwesome

Verwandte Themen