2013年11月3日 星期日

尋找上下一筆資料

SELECT TOP 20 * FROM dbo.Orders

DECLARE @OrderID int
SET @OrderID = 10252

--1.求出目前這筆資料的時間
DECLARE @dt DateTime
SELECT @dt = OrderDate
FROM Orders
WHERE OrderID = @OrderID
--2.使用時間來做比對,再透過排序的方式,來選出上一筆、下一筆資料
SELECT  * FROM
(
-- 找出上一筆資料
SELECT Top 1 OrderID,OrderDate FROM Orders 
WHERE OrderDate >= @dt 
  AND OrderID != @OrderID
ORDER BY OrderDate ASC
)[Previous]
UNION
--3.再將資料表連結起來(此步驟非必要步驟)  
SELECT  * FROM
(
-- 找出下一筆資料
SELECT Top 1 OrderID,OrderDate FROM Orders 
WHERE OrderDate <= @dt 
  AND OrderID != @OrderID
ORDER BY OrderDate DESC
)[Next]

參考資料:http://www.dotblogs.com.tw/dotjum/archive/2008/10/20/5729.aspx

標籤:

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁