选择行直到满足条件

Ron*_*n M 6 sql oracle

我想编写一个Oracle查询,该查询返回一组特定的信息。使用下表,如果给定一个id,它将返回ID和B的值。此外,如果B = T,它还将返回下一行。如果下一行具有B = T,它将返回该值,依此类推,直到遇到F。

因此,给定3,它将仅返回一行:(3,F)。给定4它将返回3行:((4,T),(5,T),(6,F))

id B
1 F
2 F
3 F
4 T
5 T
6 F
7 T
8 F

先感谢您!

Mat*_*lie 5

使用子查询找出应该在什么位置停止,然后将所有行从起点返回到计算出的终点。

SELECT
  *
FROM
  yourTable
WHERE
      id >= 4
  AND id <= (SELECT MIN(id) FROM yourTable WHERE b = 'F' AND id >= 4)
Run Code Online (Sandbox Code Playgroud)

注意,这假设最后一条记录始终为“ F”。您可以使用来处理最后一个为“ T”的记录COALESCE。

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                          )
            )
Run Code Online (Sandbox Code Playgroud)