Oracle如何计算直到当前行

时间:2018-03-08 21:34:24

标签: sql oracle

假设一个表中包含二进制值的列,我想要实现的结果是

--------------------
| 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()函数,但是在这种情况下参数非常动态。

1 个答案:

答案 0 :(得分:2)

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

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