【发布时间】:2020-03-31 16:38:41
【问题描述】:
我的桌子看起来像
ID SEQ LABEL COUNT
1 1 0 3
1 2 0 2
1 3 0 6
1 4 1 2
1 5 0 3
1 6 0 5
2 1 0 2
2 2 1 1
2 3 0 3
我想创建一个名为 running_count 的列。它计算列计数的累积总和,直到Label为1,然后重置并再次开始累积总和。
预期输出:
ID SEQ LABEL1 COUNT1 RUNNING_COUNT
1 1 0 3 3
1 2 0 2 5
1 3 0 6 14
1 4 1 2 16
1 5 0 3 3
1 6 0 5 8
2 1 0 2 2
2 2 1 1 3
2 3 0 3 3
我尝试了以下查询
SELECT A.*, SUM(COUNT1) over (partition by ID,LABEL1 order by SEQ) as RUNNING_COUNT FROM TABLE_1 A
这里的问题是,对于 Label = 1,累积总和在前一行(Seq)中停止。我需要根据 Seq 为每个 ID 获取运行总和直到 Label = 1。
我得到的错误输出
ID SEQ LABEL1 COUNT1 RUNNING_COUNT
1 1 0 3 3
1 2 0 2 5
1 3 0 6 14
1 4 1 2 2
1 5 0 3 3
1 6 0 5 8
2 1 0 2 2
2 2 1 1 1
2 3 0 3 3
【问题讨论】:
标签: sql oracle oracle-sqldeveloper window-functions gaps-and-islands