标题说明了一切,为什么我不能在 SQL Server 的 where 子句中使用窗口函数?
这个查询很有意义:
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/子查询更好的方法吗?
编辑
值得一提的是带有 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 用于显示子查询的答案,但实际上我正在寻找无法在 where 子句中使用窗口函数的原因。