我正在使用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
但是这会返回所有被调用的外观,而不是按照我的初始查询来区分值。
我不能使用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
我怎么能做到这一点?
答案 0 :(得分:0)
答案由Chris Bednarski发表评论:
尝试COUNT(调用)OVER(调用PARTITION BY)
这就是诀窍。