星期六, 12月 26, 2009

取出資料庫特定範圍的資料

最近做專案遇到一個不錯的問題,就是如何可以在database裡取出一段特定範圍的record,這樣的敘述看這樣看起來沒啥感覺,我們舉個例子好了,像無名的相簿這樣..

image

程式是由pk來抓取出前兩筆record跟後兩筆record,加上目前的一共抓出5筆,這樣一解釋大家就懂啦..現在我們現在拿NorthWind的Orders來當範例吧(如果有無名的database我就拿無名的給大家分享..哈)..直接看code吧..

with temp as(
select row_number() over (order by OrderDate) as rn, *
from Orders
)
,RealOrder as(
select rn
from temp
where OrderID = '10261'
)
select *
from temp
where rn between ((select * from RealOrder)-5) and ((select * from RealOrder)+5)

這樣就可以取出指定的Orders前5筆跟後5筆record啦..簡單吧..

ps:這是在mssql2005以上才支援的語法啦,自己看著辦吧..

沒有留言: