Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wählen Sie Zeilen aus, bis die Bedingung erfüllt ist

Verwenden Sie eine Unterabfrage, um herauszufinden, an welchem ​​Punkt Sie stoppen sollten, und geben Sie dann alle Zeilen von Ihrem Startpunkt bis zum berechneten Stopppunkt zurück.

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

Beachten Sie, dass davon ausgegangen wird, dass der letzte Datensatz immer ein „F“ ist. Sie können damit umgehen, dass der letzte Datensatz ein 'T' ist, indem Sie ein COALESCE verwenden .

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