Por que nenhuma função de janela em cláusulas where?

O título diz tudo, por que não posso usar uma função de janela em uma cláusula where no SQL Server?

Esta consulta faz todo o sentido:

select id, sales_person_id, product_type, product_id, sale_amount
from Sales_Log
where 1 = row_number() over(partition by sales_person_id, product_type, product_id order by sale_amount desc)

Mas isso não funciona. Existe uma maneira melhor do que um CTE / Subquery?

EDITAR

Por que vale a pena esta é a consulta com um CTE:

with Best_Sales as (
    select id, sales_person_id, product_type, product_id, sale_amount, row_number() over (partition by sales_person_id, product_type, product_id order by sales_amount desc) rank
    from Sales_log
)
select id, sales_person_id, product_type, product_id, sale_amount
from Best_Sales
where rank = 1

EDITAR

+1 para as respostas exibidas com uma subconsulta, mas realmente estou procurando o raciocínio por trás de não poder usar as funções de janelamento em cláusulas where.

questionAnswers(8)

yourAnswerToTheQuestion