连接数据集中每个副本的计数?



我想为查询数据集中的每个值的出现添加一个连接计数。

示例数据集:

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

我不太确定如何获得每行的这个计数。

窗口函数(也称为分析函数或有序分析函数)是解决这个问题的方法。

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

ROW_NUMBER()窗口函数将在每个不同的ID的分区/组内生成行号,并将该行号按组内OtherValue排序。一些连接和格式化,它应该吐出你想要的。

最新更新