ユーザコールデータテーブルから一意のレコードを選択するためのより良い解決策を見つけるのに苦労しています。次のように 私のテーブルの構造は次のとおりです。SQL:レコードの作成日とその他の条件に基づいてレコードをフィルタする
SELECT [MarketName],
[WebsiteName] ,
[ID] ,
[UserID],
[CreationDate],
[CallDuration],
[FromPhone] ,
[ToPhone],
[IsAnswered],
[Source]
FROM [dbo].[UserCallData]
異なると同じIDの持つこの表の複数のエントリがあります。私は[FromPhone]と[ToPhone]が過去3ヶ月以内に何度も存在するかどうかを確認したいと思いましたが、[CreationDate]に基づいてすべての列を含む最初のレコードを選択し、発生回数をTotalCallCountとしてカウントし、totalCallDuration単一のレコードとして。 [FromPhone]と[ToPhone]が複数回発生しない場合は、すべての列をそのまま選択したいと考えました。私は以下のような部分的な質問を出すことができました。しかし、これはgroup by節に含まれていないすべての列を返すわけではなく、私の全基準を満たしていません。これに関する助言は高く評価されます。
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
お客様のご要望を理解していることは明らかです。 (a)UserCallDataテーブルの "create table"スクリプト、(b)必要な場合は匿名化されたサンプルデータ、(c)サンプルデータを入力として使用する場合の期待される出力を教えてください。データには、すべてのケースをどのように処理するかを示す行が含まれている必要があります(最小限、最後の3か月以内のもの、そうでないものもあります)。 –