2014-03-06 136 views
3

我想編寫一個Oracle查詢,它返回一組特定的信息。使用下面的表格,如果給定一個id,它將返回B的id和值。另外,如果B = T,它也將返回下一行。如果下一行有一個B = T,它將返回,直到遇到F爲止。選擇行,直到滿足條件

所以,給3它只會返回一行:(3,F)。鑑於4它將返回3行:((4,T),(5,T),(6,F))

ID
1個F
2 F
3 F
4牛逼
5噸
6 F
7牛逼
8 F

預先感謝您!

回答

3

使用子查詢找出您應該停止的點,然後將所有行從您的起點返回到計算的停止點。

SELECT 
    * 
FROM 
    yourTable 
WHERE 
     id >= 4 
    AND id <= (SELECT MIN(id) FROM yourTable WHERE b = 'F' AND id >= 4) 

注意,這裏假設最後一條記錄總是'F'。您可以使用COALESCE處理最後一條記錄爲'T'。

SELECT 
    * 
FROM 
    yourTable 
WHERE 
     id >= 4 
    AND id <= COALESCE(
       (SELECT MIN(id) FROM yourTable WHERE b = 'F' AND id >= 4), 
       (SELECT MAX(id) FROM yourTable       ) 
      ) 
+0

完美工作。感謝您的迴應! –