簡體   English   中英

選擇行直到滿足條件

[英]Select rows until condition met

我想編寫一個Oracle查詢,它返回一組特定的信息。 使用下表,如果給定一個id,它將返回B的id和值。另外,如果B = T,它也將返回下一行。 如果下一行有B = T,它將返回該行,依此類推,直到遇到F為止。

因此,給定3它將返回一行:(3,F)。 給定4將返回3行:((4,T),(5,T),(6,F))

id B
1樓
2樓
3樓
4 T.
5 T
6樓
7 T.
8樓

先感謝您!

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

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                          )
            )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM