Sql server SQL Server:分页到Excel

Sql server SQL Server:分页到Excel,sql-server,pagination,recursive-query,Sql Server,Pagination,Recursive Query,我有一个大的数据集,我需要进入excel,以获得一些数据透视表和分析 我通常能够做到这一点,因为数据永远不会达到100万行。我只需要执行SQL Server数据导入并指定我的SQL语句 这是我当前的SQL WITH n AS ( Select A1.AccountID, A1.ParentAccountID, A1.Name FROM Account AS A1 WHERE A1.ParentAccountID = 92 UNION ALL SELECT A2.A

我有一个大的数据集,我需要进入excel,以获得一些数据透视表和分析

我通常能够做到这一点,因为数据永远不会达到100万行。我只需要执行SQL Server数据导入并指定我的SQL语句

这是我当前的SQL

WITH n AS (
    Select A1.AccountID, A1.ParentAccountID, A1.Name
    FROM Account AS A1
    WHERE A1.ParentAccountID = 92
UNION ALL
    SELECT A2.AccountID, A2.ParentAccountID, A2.Name
    FROM Account AS A2
    JOIN n
    ON A2.ParentAccountID=n.AccountID
)
select n.*, D.DeviceID, A.*, P.*
FROM n
LEFT OUTER JOIN
    Device AS D
    ON D.AccountID = n.AccountID
LEFT OUTER JOIN
    Audit as A
    ON A.AccountID = n.AccountID
RIGHT OUTER JOIN
DeviceAudit As P
ON P.AuditID = A.AuditID
WHERE A.AuditDate > CAST('2013-03-11' AS DATETIME)
ORDER BY n.AccountID ASC, P.DeviceID ASC, A.AuditDate DESC
现在这是我所需要的100%的回报。过去30天的1800万条记录。我希望能有一个简单的方法找到接下来的100000或500000张唱片

我可以使用
Top100000
来获取我的第一个块,尽管我似乎没有可用的偏移量

目前,该系统运行并在20分钟内完成。这是我必须执行此操作的许多帐户层次结构中的一个。希望这种分页在cpu方面不会太昂贵


我确实尝试过导出到CSV以希望导入它,但这只会给我一个12GB的CSV文件,我没有时间将其分解。

是的,自SQL 2005以来,您可以对行号进行分页子查询。将行号添加到原始查询的select子句中:

, ROW_NUMBER() OVER (ORDER BY {whatever id}) AS row
然后,您可以将旧查询设为子查询,并对该行进行查询:

SELECT TOP {results per page} *
FROM ({your previous sql statement})
WHERE row > {page# * results per page}

你找到答案了吗?我也有同样的情况