SQL帮助:查询问题

SQL帮助:查询问题,sql,sql-server,Sql,Sql Server,我总是遇到问题。我需要得到的是前三个平均死亡率最高的国家 SELECT TOP 3 Country, AVG(AverageRate) AS 'AverageRate' FROM dbo.CountryOrders WHERE OrderDate BETWEEN '2011-01-01' AND '2011-12-31' GROUP BY Country ORDER BY 'AverageRate' DESC; GO 这应该起作用: SELECT T

我总是遇到问题。我需要得到的是前三个平均死亡率最高的国家

SELECT TOP 3 
   Country, AVG(AverageRate) AS 'AverageRate'
FROM 
   dbo.CountryOrders
WHERE 
   OrderDate BETWEEN '2011-01-01' AND '2011-12-31'
GROUP BY 
   Country
ORDER BY 
   'AverageRate' DESC;
GO 
这应该起作用:

SELECT  TOP 3 Country, AVG(AverageRate) AS 'AverageRate'
FROM dbo.CountryOrders
WHERE OrderDate BETWEEN '2011-01-01' AND '2011-12-31'
GROUP BY Country
ORDER BY AVG(AverageRate) DESC;
GO 

问题是单引号是
AverageRate
。仅对字符串和日期常量使用单引号。此处不需要它们,因此只需将它们移除:

SELECT  TOP 3 Country, AVG(AverageRate) AS AverageRate
FROM dbo.CountryOrders
WHERE OrderDate BETWEEN '2011-01-01' AND '2011-12-31'
GROUP BY Country
ORDER BY AverageRate DESC;

您的查询无法按排序,因为您正在按常量值排序,字符串“AverageRate”。如果您需要转义标识符,请使用双引号或方括号(Sybase和SQL Server特有)。

您的数据库是否支持
TOP 3
?在SQL Server 2005/2008
中,ORDER by
看不到别名。您的日期格式建议使用MySQL,您的
dbo。
和TOP N建议使用SQL Server。这是什么RDBMS?或者使用列索引:
orderby2
这回答了问题!谢谢你和@Gordon