Eri*_*ker 3 sql t-sql sql-server sql-server-2008
我有一个SQL查询,它做了一些排名,如下所示:
SELECT RANK() OVER(PARTITION BY XXX ORDER BY yyy,zzz,oooo) as ranking, *
FROM SomeTable
WHERE ranking = 1 --> this is not possible
Run Code Online (Sandbox Code Playgroud)
我想在最后的WHERE条件中使用该排名.
现在我将此查询嵌套在另一个查询中并对那里的排名进行过滤,但是没有更简单或更快的方法从SELECT语句中过滤这些值吗?
使用CTE(公用表表达式) - 仅用于下一个语句的"内联"视图:
;WITH MyCTE AS
(
SELECT
RANK() OVER(PARTITION BY XXX ORDER BY yyy,zzz,oooo) as ranking,
*
FROM SomeTable
)
SELECT *
FROM MyCTE
WHERE ranking = 1 --> this is now possible!
Run Code Online (Sandbox Code Playgroud)