连接数据集中每个重复项的计数?

Concatenate a count for each duplicate in dataset?

我想为来自查询的数据集中每次出现的值添加一个串联计数。

示例数据集:

ID      OtherValue    
00A     2ndValue_1    
00A     2ndValue_2    
00A     2ndValue_3    
00A     2ndValue_4    
00B     2ndValue_1    
00C     2ndValue_1    
00D     2ndValue_1    
00D     2ndValue_2 

我希望查询生成此数据集:

ID      OtherValue    ConcatinatedCount
00A     2ndValue_1    00A-001
00A     2ndValue_2    00A-002
00A     2ndValue_3    00A-003
00A     2ndValue_4    00A-004
00B     2ndValue_1    00B-001
00C     2ndValue_1    00C-001
00D     2ndValue_1    00D-001
00D     2ndValue_2    00D-002

我不太确定如何计算每行的计数。

Window 函数(也称为分析函数或有序分析函数)是解决此问题的方法。

SELECT 
  ID, 
  OtherValue, 
  ID + '-' + FORMAT(ROW_NUMBER() OVER (PARTITION BY ID ORDER BY OtherValue), '000') as ConcatinatedCount
FROM yourtable;

ROW_NUMBER() window-funtion 将在每个不同的 ID 的 partition/group 内生成一个行号,并且它将按 OtherValue 内的行号排序群组。一些连接和格式化,它应该会吐出你想要的东西。