0

我正在使用带有此表的 SQL Server 2008: 在此处输入图像描述

我有以下查询:

SELECT caller, called, SUM(duration) as duration, 
      dateadd(DAY,0, datediff(day,0, time))as Batch2 ,
      CONVERT(VARCHAR(8), time, 4) AS Batch  
FROM  Calls oc
WHERE caller='somevalue'
GROUP BY called, dateadd(DAY,0, datediff(day,0, time)),
          CONVERT(VARCHAR(8), time, 4),
          caller
ORDER BY duration DESC,called

现在我想按查询中包含相同调用值的行数对查询进行排序,这意味着第一个结果将是大多数日子出现的调用。

现在我得到的最接近的是使用:

order by (select count(called) from Calls where called=oc.called ),
         duration DESC,
         called

但这通常会返回 call 的所有外观,而不是按我的初始查询区分值分组。

而且我不能使用OVER(),因为它只会返回一般的行数。

这是我现在的输出示例:

callervalue   somecalledvalue   589 2012-11-21 00:00:00.000 21.11.12
callervalue   somecalledvalue   551 2012-11-20 00:00:00.000 20.11.12
callervalue   somecalledvalue   506 2012-11-22 00:00:00.000 22.11.12

我怎样才能做到这一点?

4

1 回答 1

0

答案由 Chris Bednarski 作为评论发布:

尝试 COUNT(called) OVER (PARTITION BY called)

哪个成功了。

于 2012-12-04T10:37:27.403 回答