2016-05-22 5 views
-1

Ich habe eine SQL Server-Tabelle wie folgt (calltable). Dies ist eigentlich eine CDR-Tabelle (Call Detail Records). Unser aktuelles System bricht CDRs alle 30 Minuten (1800 Sekunden). Also muss ich die tatsächliche Anrufdauer eines bestimmten Anrufs mithilfe einer SQL Server-Abfrage (resulttable) abrufen.So fügen Sie die Dauer von Teilsätzen hinzu

Bitte beachten Sie, dass es andere Ruflisten mit derselben Rufnummer (anumber) & genannte Nummer (bnumber) weniger als 1800 Sekunden geben kann. Diese Aufzeichnungen sollten ohne eine Zusammenfassung da sein.

Calltable:

calltable

Result:

resulttable

+0

Diese Datenstruktur stellt keinen Mechanismus zum Bestimmen bereit, ob zwei benachbarte CDRs dieselben oder unterschiedliche Aufrufe darstellen. In Ihren Beispieldaten ist es sicher möglich, dass die zweite Zeile ein Anruf war, der 1800 Sekunden dauerte und die dritte Zeile NICHT eine Fortsetzung dieses Anrufs ist, sondern ein Anruf von 200 Sekunden, der später in demselben 30-Minuten-Zeitraum auftrat. Müssen Sie diese beiden Situationen unterscheiden? –

+0

Partielle CDRs sind nicht in einer Sequenz in der tatsächlichen Datenbanktabelle. Sie können überall in der Tabelle sein. Nur eine Möglichkeit, diese partiellen CDRs zu identifizieren, sind die gleiche Nummer, Bnumber & hinzugefügt 30 Minuten zu Calldate. –

+0

CDRs enthalten normalerweise eine Anruf-ID, die mehrere Teile eines Anrufs miteinander verbinden kann. – Alex

Antwort

1

Kannst du nicht einfach das Enddatum von der Dauer berechnen, dann Lücken verwenden & Inseln Algorithmen, um zu bestimmen, was das ist Derselbe Aufruf (unter der Annahme, dass kleine Lücken in der Zeit immer noch als ein Anruf angesehen werden), und wenn Sie es brauchen, dann berechnen Sie es wieder auf die Dauer

+0

Wenn die Anrufdauer in einer CDR 1800 Sekunden beträgt, muss sie eine CDR in der Tabelle mit der gleichen Nummer, B-Nummer und 30 Minuten hinzugefügtem Anruf finden. Also irgendeine Idee, um eine Abfrage dafür zu erstellen? –

+0

@DilshanPeiris Ja, und das war meine Anweisung. Ist etwas unklar? –

+0

Eigentlich habe ich keine Ahnung von Lücken und Inseln Algorithmen. :-( –

Verwandte Themen