我有一个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”附近的语法不正确。
您应该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] 删除。
我来说两句