除了不适用于嵌入式 sql 查询

Except is not working with embedded sql query

我遇到了这个问题,它真的让我很苦恼,因为我真的找不到解决办法。我在 SQL Server Management Studio 工作。 在这里,我 select 不同的数据和每个不同数据的另一列的平均值,如下所示:

SELECT age, standing
FROM 
(SELECT DISTINCT standing, avg(age) as age
FROM student
group by standing) as s

现在,这工作正常。当我尝试这样做时出现问题:

SELECT age, standing
FROM 
(SELECT DISTINCT standing, avg(age) as age
FROM student
group by standing) as s

EXCEPT 

SELECT age, standing
FROM 
(SELECT DISTINCT standing, avg(age) as age
FROM student
WHERE standing = 'JR'
group by standing) as k

EXCEPT 上方和 EXCEPT 下方的 select 工作正常,但它们放在一起就不行了。该程序告诉我一个关于 except 的错误: 解析查询时出错。 [令牌行号 = 6,令牌行偏移量 = 1,错误令牌 = EXCEPT]

我还尝试了 UNION、INTERSECT 和 MINUS。只有 union 似乎有效,现在我真的不知道这里发生了什么。

我很期待解决方案,也很感兴趣我做错了什么。

您是否要排除排名 'JR' 的记录? 为什么不试试这个:

SELECT age, standing
FROM 
(SELECT DISTINCT standing, avg(age) as age
FROM student
where standing <> 'JR'
group by standing) as s

你能运行这个查询'select @@version'并告诉你得到的信息吗? 我在我的 "sql sever 2008" 上尝试了一个类似于您的查询,它工作正常。 此外,当您使用 union、intersect 和 except 时,您不需要使用 distinct,它不会导致任何问题,但不需要,因为它们 return 不同的行。