【问题标题】:Oracle how to count until current rowOracle如何计数直到当前行
【发布时间】:2018-03-08 21:34:23
【问题描述】:

假设一个表有一个二进制值的列,我想要实现的是这里的结果

--------------------
| data  |   result |
-------------------- 
| false |     0    |
| false |     0    |
| true  |     1    |
| false |     1    |
| false |     1    |
| true  |     2    |
| true  |     3    |
| false |     3    |
| false |     3    |
| true  |     4    |
.....
--------------------

结果列中的到达行将是数据列中从顶行到下一行的总true值的计数。

我检查了 lag() 或 lead() 函数,但是这里的参数在这种情况下是非常动态的。

【问题讨论】:

  • 您有指定排序的列吗?也包括你的尝试。

标签: sql oracle


【解决方案1】:

这可以通过运行总和来完成。

select t.*,sum(case when data='true' then 1 else 0 end) over(order by specify_order_col) as result
from tbl t

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 2020-11-11
    • 2013-06-29
    • 1970-01-01
    • 2021-01-04
    相关资源
    最近更新 更多