営業担当者のリストと、その営業担当者が値の点で最も多く販売した月数を取得しようとしています。rank
クエリは機能していますが、このサイトはSQL Server 2000を使用しているため、関数を使用できないことに今まで気づきませんでした.
これが私の現在のクエリです
select top 5 name, count(*) as amount
from
(
select e.first_name + ' ' + e.last_name name,
RIGHT(CONVERT(VARCHAR(10), oe.entry_date, 105), 7) as date, sum(oe.totalPrice) price,
rank() over(partition by RIGHT(CONVERT(VARCHAR(10), oe.entry_date, 105), 7)
order by sum(oe.totalPrice) desc) as ranking
FROM order_entry oe
INNER JOIN employees e ON oe.sales_rep_emp_number = e.employee_number
group by e.first_name + ' ' + e.last_name, RIGHT(CONVERT(VARCHAR(10), oe.entry_date, 105), 7)
) temp
where ranking = 1
group by name
order by count(*) desc
その内部クエリを関数に依存しないものに置き換える必要がありrank
ます。この関数の効果を「再現」する方法をいくつか見つけましたが、ランク テーブルとして使用される ID 列を含む一時テーブルを作成する必要がありました。しかし、私はいくつかのランキング (毎月 1 つ) を持っているので、うまくいきません。rank
さらに、関数なしでこれを達成する別の方法があるのではないかと考えました。
誰にもアイデアはありますか?ありがとう!