2014-09-20 68 views
-1

我使用SQL Server 2008中隨着在SQL Server TOP條款的幫助,我已經運行下面的查詢從我的表顯示系第1000行的SQL Server 2008 - 如何1001之間的行顯示到2000

Select TOP 1000 * 
from Department; 

現在我需要顯示來自同一個表的下一個1000個數據。任何人都可以幫我找到解決方案嗎?

+5

首先,沒有* ORDER BY的'TOP' *是沒有意義的 - 你要訂購什麼,以獲得「top 1000」行?您需要決定哪個列要排序 - **然後**(並且只有這樣)「TOP」纔有意義 – 2014-09-20 09:03:12

回答

1

你可以嘗試這樣的:

SELECT * 
FROM (
      SELECT *, ROW_NUMBER() OVER (ORDER BY DEPARTMENT_NAME) AS rownum 
      FROM DEPARTMENT 
     ) AS t 
WHERE t.rownum BETWEEN 1001 AND 2001 
+1

這是在添加row_number之前在SQL Server 2000中使用的技術... – Sandr 2014-09-21 11:31:49

3

您可以使用ROW_NUMBER函數來獲取行的數量,然後從X乘坐人數爲Y.下面的查詢是假設你想要的結果通過ID下令:

WITH OrderedDepartments AS 
(
    SELECT ID, Name, 
    ROW_NUMBER() OVER (ORDER BY ID) AS RowNumber 
    FROM Department 
) 
SELECT ID, Name 
FROM OrderedDepartments 
WHERE RowNumber BETWEEN 1001 AND 2000; 
+0

如果您希望數據按特定順序列出,您需要將此順序添加到您的查詢中。在所提到的查詢中,這是在row_number計算(*'按ID *排序)的條件下添加的。沒有它,Row_number函數就無法工作。並且在您的查詢中,不保證您不會在不同的子集中收到相同的行兩次。 – Sandr 2014-09-21 11:35:22

-1

最好的辦法是用 「Fetch(的Transact-SQL)」 的詳細信息,並在下面的鏈接提供樣品,

FETCH (Transact-SQL)

+1

FETCH選項僅與光標相關。 – Sandr 2014-09-21 11:31:19

+0

FETCH選項在這種情況下不相關,因爲它僅適用於遊標。 – 2014-09-21 13:15:08

相關問題