假设一个表中包含二进制值的列,我想要实现的结果是
--------------------
| 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()函数,但是在这种情况下参数非常动态。
答案 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