首页 > 解决方案 > 增量计数

问题描述

我有一个包含客户编号和订单日期列表的表格,并希望对每个客户编号添加计数,每次客户编号更改时从 1 重新开始,我已将表格排序为客户,然后是日期顺序,需要添加订单计数列。

CASE WHEN 'Customer Number' on This row = 'Customer Number' on Previous Row then ( Count = Count on Previous Row + 1 ) 
Else Count = 1

解决这个问题的最佳方法是什么?

客户中的客户和日期,然后是日期顺序:

Customer    Date      Count
0001        01/05/18  1 
0001        02/05/18  2
0001        03/05/18  3
0002        03/05/18  1  <- back to one here as Customer changed
0002        04/05/18  2
0003        05/05/18  1  <- back to one again

我刚刚尝试过COUNT(*) OVER (PARTITION BY Customer ) as COUNT,但由于某种原因,当客户更改时,它似乎不是从 1 开始的

标签: sqloraclelagwindow-functionslead

解决方案


很难说出您想要什么,但是“对每个客户编号添加计数,每次客户编号更改时从 1 重新开始”听起来好像您只是想要:

count(*) over (partition by customer_number) 

或者这应该是该行日期的“最多”计数:

count(*) over (partition by customer_number order by order_date) 

推荐阅读