sql >> Base de Datos >  >> RDS >> Oracle

Seleccionar filas hasta que se cumpla la condición

Use una subconsulta para averiguar en qué punto debe detenerse, luego devuelva todas las filas desde su punto de inicio hasta el punto de parada calculado.

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

Tenga en cuenta que esto supone que el último registro siempre es una 'F'. Puede tratar que el último registro sea una 'T' usando un 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                          )
            )