2013-04-12 43 views
1

我有一個很大的數據集,我需要進入Excel來獲取一些數據透視表和分析。SQL Server:分頁到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萬條記錄。我希望能有一種簡單的方法來找到接下來的100,000或50萬條記錄。

我可以使用TOP 100000來獲得我的第一個塊,儘管我似乎沒有可用的偏移量。

目前這個運行在20分鐘內完成。這是我必須執行此操作的許多帳戶層次結構中的一個。希望這個分頁不會太明智cpu明智。

我嘗試導出爲CSV,希望導入它,但這只是給我一個12GB的csv文件,我沒有時間和分解。

+0

您是否找到了答案?我有同樣的情況 –

回答

0

是的,你可以做的行數分頁子查詢,因爲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}