2015-10-02 61 views
-1

是否有任何方法可以從一個起點取一個表並選擇10條記錄,但是如果到達表的末尾,則返回到起點?所以一個100條記錄的表格,從95條記錄開始選擇10條記錄將是95-100和1-4。從表中選擇,如果到達結束從MSSQL中的開始選擇

+0

當然,Union選擇頂部並選擇底部或智能使用行號。你到目前爲止嘗試過什麼? – jean

回答

0

假設你有一個記錄編號的列,那麼你可以使用算法來定義排序:

select t.* 
from table t 
order by (recnum + (100 - 95)) % 100) ; 

如果不是:

select t.* 
from table t cross join (select count(*) as cnt from t) x 
order by (recnum + (x.cnt - 95)) % x.cnt) ; 

如果您的記錄未按順序編號,那麼你可以添加數字:

select t.* 
from (select t.*, count(*) over() as cnt, 
      row_number() over (order by recnum) as seqnum 
     from table t 
    ) t 
order by (seqnum + (cnt - 95)) % cnt) ;