Заголовок говорит все, почему я не могу использовать оконную функцию в предложении where в SQL Server?
Этот запрос имеет смысл:
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)
Но это не сработает. Есть ли лучший способ, чем CTE/Subquery?
ИЗМЕНИТЬ
Для чего стоит запрос с помощью 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
ИЗМЕНИТЬ
+1 для ответов, отображаемых с помощью подзапроса, но на самом деле я ищу аргументы в пользу того, что вы не можете использовать функции окон в тех случаях, когда клаузулы.