选择所有行,直到第一次出现给定值

Kam*_*ora 10 sql oracle

对于以下数据:

日期|价值|检查
2009 | 5 | 1
2008 | 5 | 1
2007 | 5 | 1
2006 | 5 | 0
2005 | 5 | 0
2004 | 5 | 1
2003 | 5 | 1
2002年| 5 | 1

我需要从2009年开始选择所有行,直到检查列中第一次出现0:

日期|价值|检查
2009 | 5 | 1
2008 | 5 | 1
2007 | 5 | 1

我尝试了滞后功能,但我只能在一个月前检查.

我正在研究Oracle 10g.

更新:

一切似乎都运行良好,我的测试数据集太小,无法说出性能差异.

ken*_*418 13

SELECT * FROM mytable where date > (
   SELECT max(date) FROM mytable where check = 0    
) 
Run Code Online (Sandbox Code Playgroud)