温馨提示:本文翻译自stackoverflow.com,查看原文请点击:tsql - SQL Server subquery with top and max returning error
sql-server tsql

tsql - SQL Server子查询,返回最高错误和最高错误

发布于 2020-03-29 21:49:11

为什么此代码不起作用?我得到这个错误

')'附近错误

在最后一行。我看不到我在哪里犯了语法错误(这是针对SQL Server 2017)。

DECLARE @NumRows INT;  

SELECT @NumRows = COUNT(*) / 2
FROM SAMA;

SELECT MAX(NoMonths) 
FROM 
    (SELECT TOP(@NumRows) NoMonths  
     FROM SAMA 
     ORDER BY NoMonths ASC)

查询要执行的操作是查找前N行中的最大行,并且N在变量中定义。

没有MAX,子查询将工作并返回N行。但是当我添加时MAX,它失败了。

查看更多

提问者
Lana B
被浏览
33
Sebastian Brosch 2020-01-31 18:57

您必须设置表别名:

DECLARE @NumRows INT;

SELECT @NumRows = COUNT(*) / 2 FROM SAMA;

SELECT MAX(NoMonths) 
FROM (
  SELECT TOP(@NumRows) NoMonths  
  FROM SAMA 
  ORDER BY NoMonths ASC
) table_alias