私はこのテーブルで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
どうすればこれを達成できますか?