当另一列中的值发生变化时,如何增加计数器?

Hug*_*ugo -3 sql t-sql sql-server row-number

我有下表

ID      
12     
12    
25    
25    
78    
78    
78  
Run Code Online (Sandbox Code Playgroud)

并且我需要能够在ID更改时递增计数器值.

ID    **COUNTER**  
12     1
12     1
25     2
25     2
78     3
78     3
78     3
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?它甚至可能吗?

Tar*_*ryn 8

你可以使用dense_rank():

select id,
  dense_rank() over(order by id)  Counter
from yourtable
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo

结果:

| ID | COUNTER |
----------------
| 12 |       1 |
| 12 |       1 |
| 25 |       2 |
| 25 |       2 |
| 78 |       3 |
| 78 |       3 |
| 78 |       3 |
Run Code Online (Sandbox Code Playgroud)