从 DB 表中查找非连续的原始值 - SQL

Posted

技术标签:

【中文标题】从 DB 表中查找非连续的原始值 - SQL【英文标题】:Find non-consecutive raw values from DB table- SQL 【发布时间】:2017-02-14 10:24:51 【问题描述】:

我正在寻找 Oracle 中的一些分析函数或一些可以从表中找到非连续原始值的查询。

示例示例

ORDER   FLAG    |   ORDER   FLAG
6      TRUE     |    6     TRUE
2      FALSE    |    5     TRUE
2      FALSE    |    4     TRUE
1      FALSE    |    3     TRUE


ORDER   FLAG    |   ORDER   FLAG
2       TRUE    |   7      TRUE
2       TRUE    |   7      TRUE
2       TRUE    |   6      TRUE
1       TRUE    |   1      FALSE
1       TRUE    |   1      FALSE

因此,如果两个连续行之间存在间隙值,我想设置标志 'False'- 并且一旦我们设置 'False' 就不需要在该列中进一步检查连续值。

(允许重复值 - 所以,2-2-2-1-1 很好;但 7-7-6-1-1 由于 6 和 1 之间的差距而失败)

基本上我想标记表格中的非连续值。

请告诉我是否有任何分析功能可以完成这项工作。

【问题讨论】:

【参考方案1】:

您可以使用LAG analytic function 提供对先前行的访问,并检查结果是否等于当前行的值或值加1。

【讨论】:

您能举个例子吗?我检查了 docs.oracle- 但没有正确理解。 当然,Oracle-Base 在这里提供了一些很好的示例:oracle-base.com/articles/misc/lag-lead-analytic-functions

以上是关于从 DB 表中查找非连续的原始值 - SQL的主要内容,如果未能解决你的问题,请参考以下文章

查找表中每个 ID 的最大连续年份(Oracle SQL)

在 SQL Server 中查找非连续日期

用于从连续记录中收集值的 Netezza SQL

SQL Server:查找大于 5 的最近连续记录

SQL:查找给定字段连续几天具有不同字符串值的记录

查找连续周人员出现在表中