例如,有一些表格包含以下数据:
No Id Value
1 100 1
2 100 0
3 100 1
4 100 2
1 101 1
2 101 2
1 102 0
2 102 1
我必须编写SQL查询,它将根据特定条件返回行计数。如果值匹配0,则需要重置运行计数,并从1开始,使前一行值为0
所以结果会是这样的:
No Id Value Running Count
1 100 1 0
2 100 0 0
3 100 1 1
4 100 1 2
1 101 1 1
2 101 2 2
1 102 1 0
2 102 0 0
1条答案
按热度按时间xyhw6mcr1#
你的示例数据集非常有限,所以我不能确定所有的边缘情况,但看看下面的工作是否适合你,如果不是,它可能会帮助你到达那里。
它使用window & case表达式获取一个运行计数,并使用 lead 检查下一个值。
如果当前值或下一个值为0,则计数为0,否则,如果Id块中存在0,则计数为运行计数减1,表示计数已重置。