SQL

SQL:在WHERE子句中使用SELECT中的计算字段

发布于 2021-04-20 22:38:11

我有一个执行一些排名的SQL查询,如下所示:

SELECT RANK() OVER(PARTITION BY XXX ORDER BY yyy,zzz,oooo) as ranking, * 
FROM SomeTable
WHERE ranking = 1 --> this is not possible

我想在末尾的WHERE条件下使用该排名。

现在,我将此查询嵌套在另一个查询中,并在该查询上进行排名过滤,但是没有更简单或更快速的方法来过滤SELECT语句中的此类值吗?

关注者
0
被浏览
74
1 个回答
  • 面试哥
    面试哥 2021-04-20
    为面试而生,有面试问题,就找面试哥。

    使用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!
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看