从SQL查询中检索n行

时间:2015-01-20 10:10:01

标签: sql excel-vba vba excel

我想只从SQL查询的N行结果中检索一行。例如:

Set rs = conn.Execute("SELECT ..... ")
strResult = rs.Fields(0)

查询结果:

30
45
70
....

我如何使用此查询中的第二个值(20)?通过VBA或更改sql查询。 我使用的是SQL服务器。有" LIMIT"或" TOP"命令,但它们用于不同的目的。

2 个答案:

答案 0 :(得分:0)

这可能会对你有所帮助 OFFSET n ROWS表示在n行之后 FETCH NEXT 1 ROWS ONLY意味着获得一行 但它需要ORDER BY语句

SELECT * from table
ORDER BY <columns>
OFFSET n ROWS
FETCH NEXT 1 ROWS ONLY

答案 1 :(得分:0)

您可以使用ROW_NUMBER()函数。您必须在某个有序列上选择ROW_NUMBER,然后您可以使用WHERE cla查询您的选择

USE AdventureWorks2012; 
GO
SELECT ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS Row, 
    FirstName, LastName, ROUND(SalesYTD,2,1) AS "Sales YTD" 
FROM Sales.vSalesPerson
WHERE TerritoryName IS NOT NULL AND SalesYTD <> 0;

使用公用表表达式查询您的行号

WITH OrderedEmployees(Row, FirstName, LastName)
As(
    SELECT ROW_NUMBER() OVER(ORDER BY FirstName DESC) AS Row, 
        FirstName, LastName
    FROM Employees
) 
SELECT * FROM 
OrderedEmployees
WHERE Row = 2

您可以查看此SQL FIDDLE并对其进行验证。

Using Common Table Expressions

ROW_NUMBER (Transact-SQL)