Sql 选择第n行并将其分配给变量
我想选择第n行并将其分配给一个变量。到目前为止,我有:Sql 选择第n行并将其分配给变量,sql,sql-server,Sql,Sql Server,我想选择第n行并将其分配给一个变量。到目前为止,我有: DECLARE @LEVEL INT; DECLARE @COUNT INT = 14; DECLARE @A INT = 1; SET @LEVEL = (SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY Q_Total) AS rownumber, Q_Response FROM #Qtemp) AS name WHERE r
DECLARE @LEVEL INT;
DECLARE @COUNT INT = 14;
DECLARE @A INT = 1;
SET @LEVEL = (SELECT * FROM
(SELECT ROW_NUMBER() OVER (ORDER BY Q_Total) AS rownumber, Q_Response
FROM #Qtemp) AS name WHERE rownumber = @COUNT - @A);
select查询似乎有效,但我发现以下错误:
信息116,16级,状态1,第176行
当子查询未引入EXISTS时,只能在选择列表中指定一个表达式
我正在做的是可能的还是有其他方法可以做到这一点?
谢谢 您的代码有错误。将“选择结果”指定给值时,结果集中必须包含一列。改为
DECLARE @LEVEL INT;
DECLARE @COUNT INT = 14;
DECLARE @A INT = 1;
SET @LEVEL = (SELECT Q_Response FROM
(SELECT ROW_NUMBER() OVER (ORDER BY Q_Total) AS rownumber, Q_Response
FROM #Qtemp) AS name WHERE rownumber = @COUNT - @A);
如果您使用SQL 2012,那么它可能会简化
DECLARE @LEVEL INT;
DECLARE @COUNT INT = 14;
DECLARE @A INT = 1;
SELECT @LEVEL = Q_Response FROM #Qtemp
ORDER BY Q_Total
OFFSET @COUNT - @A ROWS FETCH FIRST 1 ROW ONLY
将列别名移到“as name(rownumber,Q_Response)”?当您说将第n行赋值给变量时,您的意思是将第n行的值赋值给变量吗?在这种情况下,将
SELECT*FROM…
更改为SELECT FROM…