我很努力地找到更好的解决方案,从我的用户调用数据表中选择唯一记录。 我的表结构如下:SQL:根据记录创建日期和其他条件筛选记录
SELECT [MarketName],
[WebsiteName] ,
[ID] ,
[UserID],
[CreationDate],
[CallDuration],
[FromPhone] ,
[ToPhone],
[IsAnswered],
[Source]
FROM [dbo].[UserCallData]
有此表中的多个条目与不同和相同的ID。我想在最近3个月内检查[FromPhone]和[ToPhone]是否存在多次,如果是,我想根据[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)使用该示例数据作为输入时的预期输出。数据应包含说明您希望如何处理所有案例的行(最低限度有些在最近三个月内,有些则没有)。 –