Ich bin schwer zu finden, eine bessere Lösung für die Auswahl von einzigartigen Datensätzen aus meinem Benutzer Anruf Datentabelle. Meine Tabellenstruktur ist wie folgt:SQL: Filter Datensätze basierend auf Datensatz Erstellungsdatum und anderen Kriterien
SELECT [MarketName],
[WebsiteName] ,
[ID] ,
[UserID],
[CreationDate],
[CallDuration],
[FromPhone] ,
[ToPhone],
[IsAnswered],
[Source]
FROM [dbo].[UserCallData]
Es gibt mehrere Einträge in dieser Tabelle mit unterschiedlichen und gleichen IDs. Ich wollte überprüfen, ob [FromPhone] und [ToPhone] in den letzten 3 Monaten mehrfach vorhanden ist. Wenn ja, wollte ich den ersten Datensatz mit allen Spalten auf Basis von [CreationDate] auswählen, die Anzahl der Vorkommen als TotalCallCount zählen und summaryCallDuration addieren als ein einziger Datensatz. Wenn [FromPhone] und [ToPhone] nicht mehrmals vorkommen, wollte ich alle Spalten als solche auswählen. Ich war in der Lage, Teilabfrage wie unten zu stellen. Aber das gibt nicht alle Spalten zurück, ohne sie in die group by-Klausel aufzunehmen, und es erfüllt auch nicht meine gesamten Kriterien. Jede Hilfe wird sehr geschätzt.
select [FromPhone],
MIN([CreationDate]),
[ToPhone],
marketname,
count(*) as TotalCallCount ,
sum(CallDuration) as TotalCallDuration
from [dbo].[UserCallData]
where [CreationDate] >= DATEADD(MONTH, -3, GETDATE())
group by [FromPhone],[ToPhone], marketname
having count([FromPhone]) > 1 and count([ToPhone]) >1
Wir haben eindeutig Probleme, Ihre Anfrage zu verstehen. Können Sie uns folgendes mitteilen: (a) das "create table" -Skript für die UserCallData-Tabelle, (b) einige Beispieldaten (falls erforderlich anonymisiert) und (c) die erwartete Ausgabe, wenn diese Beispieldaten als Eingabe verwendet werden. Die Daten sollten Zeilen enthalten, die veranschaulichen, wie alle Fälle behandelt werden sollen (also minimal, einige innerhalb der letzten drei Monate, andere nicht). –