我想写一个Oracle查询,它返回一组特定的信息。使用下表,如果给定一个id,它将返回B的id和值。另外,如果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楼
提前谢谢!
答案 0 :(得分:4)
使用子查询找出您应该停止的位置,然后将所有行从起点返回到计算的停止点。
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 )
)