请教一段sql语句,请问有没有语法错误

来源:百度知道 编辑:UC知道 时间:2024/06/20 10:00:18
SELECT DISTINCT tempD.managerid
FROM (SELECT DISTINCT D.managerid, SUM (D.budget) AS tempBudget
FROM Dept D
GROUP BY D.managerid ) AS tempD
WHERE tempD.tempBudget = (SELECT MAX (tempD.tempBudget)
FROM tempD)

从参考书直接拷贝下来的,但是在我的sql2005中运行出错。请大家帮忙分析一下。如果是错的,要怎么修改才能正确呢?

最后一句有问题, (SELECT MAX (tempD.tempBudget)
FROM tempD),这里tempD意在调用上面的查询结果集,但是这已经不是嵌套查询,而是一个独立的取值语句,不可以调用了,系统只能认为他是视图或者表,所以应该会提示对象无效。按照你的意思,可以这么改:再定义一次tempD,

SELECT DISTINCT tempD.managerid
FROM (SELECT DISTINCT D.managerid, SUM (D.budget) AS tempBudget
FROM Dept D
GROUP BY D.managerid ) AS tempD
WHERE tempD.tempBudget = (SELECT MAX (tempD.tempBudget)
FROM (SELECT DISTINCT D.managerid, SUM (D.budget) AS tempBudget
FROM Dept D
GROUP BY D.managerid ) AS tempD)

这里有问题
WHERE tempD.tempBudget = (SELECT MAX (tempD.tempBudget)
FROM tempD)
其中SELECT MAX (tempD.tempBudget)
FROM tempD中的tempD表的范围达不到这里了
有一个笨方法就是在写一遍这个表的语句如下:
SELECT DISTINCT tempD.managerid
FROM (SELECT DISTINCT D.managerid, SUM (D.budget) AS tempBudget
FROM Dept D
GROUP BY D.managerid ) AS tempD
WHERE tempD.tempBudget = (SELECT MAX (tempD.tempBudget)
FROM (SELECT DISTINCT D.managerid, SUM (D.budget) AS tempBudget
FROM