我在SQL Server 2005中的表:幫我選擇查詢
id student active
1 Bob 1
3 Rob 0
5 Steve 1
7 John 1
8 Mark 0
10 Dave 0
16 Nick 1
我的選擇查詢由給定id返回一個活躍的學生。 但我也想要返回活躍的prev和next學生的ID。如果沒有prev,它將爲0或null。下一個相同。
示例:對於ID = 5,我的選擇數據將返回
id student prev_id next_id
5 steve 1 7
示例:對於ID = 7,我的選擇數據將返回
id student prev_id next_id
7 John 5 16
示例:對於ID = 16,我的選擇將返回
id student prev_id next_id
16 Nick 7 0
如何編寫此選擇查詢?
我有查詢,但我無法正確獲得prev id。它總是返回第一個活動的ID。
感謝
編輯: 下面是該查詢我現在所擁有的。
select id, student,
(select top 1 id from test where id<7 and active=1) as prev,
(select top 1 id from test where id>7 and active=1) as next
from test where id=7--I used 7 just as an example. it will be a parameter
您的查詢是什麼? – Nishant 2011-03-02 07:00:28
我可以想到一些非常討厭的相關子查詢,它們會得到你想要的,但是這個要求的原因是什麼?也許有不同的方式來滿足這個要求。 – 2011-03-02 07:06:16
select test,student, (select test test from test where id <7 and active = 1)as prev, (select top 1 id from test where id> 7 and active = 1)as next from test where id = 7 - 我將使用7 – kheya 2011-03-02 07:06:18