SQL-2条带有UNION和WITH的SELECT语句

黑M

我有一个WITH声明(我想对为什么使用with的结果进行一些计算)和一个SELECT

假设该SELECT声明收集的是成绩最好的20名学生。

现在我想让20名成绩最差的学生,所以我尝试了另一个

WITH cteGrades AS 
( 
    SELECT *
    FROM tbl_students
)
--Selecting best Grade 
SELECT TOP(20)
    cte.name, cte.surname, cte.grade
FROM 
    cteGrade cte
ORDER BY 
    cte.grade DESC

UNION

--Selecting worst Grade 
SELECT TOP(20)
    cte.name, cte.surname, cte.grade
FROM 
    cteGrades cte
ORDER BY 
    cte.grade ASC

我得到了错误:

关键字“ UNION”附近的语法不正确。

瓦姆西·普拉巴拉(Vamsi Prabhala)

您应该order by在union子句中删除union在整个结果集之后进行排序或将查询设为,cte然后union对结果执行

 WITH cteGrade AS 
          ( 
            SELECT  *
            FROM tbl_students
           )
            --Selecting best Grade 
 , top20 as 
            (SELECT TOP(20)
                 cte.name
                ,cte.surname
                ,cte.grade
            FROM cteGrade cte
            ORDER BY cte.grade DESC)
 , last20 as 
             (
            --Selecting worst Grade 
            SELECT TOP(20)
                 cte.name
                ,cte.surname
                ,cte.grade
            FROM cteGrade cte
            ORDER BY cte.grade ASC
             )
 select name, surname, grade from top20
 union all
 select name, surname, grade from last20

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章