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

标签 sql oracle

对于以下数据:

date|value|check
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:

date|value|check
2009 | 5 | 1
2008 | 5 | 1
2007 | 5 | 1



我试过滞后功能,但我只能在一个月前检查。

我正在研究 Oracle 10g。

更新:

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

最佳答案

SELECT * FROM mytable where date > (
   SELECT max(date) FROM mytable where check = 0    
) 

关于sql - 选择所有行直到第一次出现给定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/733979/

相关文章:

java - Websphere Application Server 6.1数据源上的UnsatisfiedLinkError

oracle - 与 Java 6 一起使用的 Oracle 瘦驱动程序版本

sql - Oracle SQL一条语句多属性多表权限授权

sql - 如何使用 Oracle 中的 AL32UTF 字符集确定 CLOB 的长度(以字节为单位)?

sql - 按字母顺序排列 ActiveRecord 结果

c# - 如何只比较 sql server 2008 中日期时间字段的年份?

sql - 如何区分没有 ID 的日志以在 SQL 上单独聚合它们?

sql - 带有两个函数语句的 PostgreSQL 触发器

oracle - Oracle 中的审计

java - 将 Java vector 写入分隔文件