我正在使用带有此表的 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
我怎样才能做到这一点?