我想为查询数据集中的每个值的出现添加一个连接计数。
示例数据集:
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
排序。一些连接和格式化,它应该吐出你想要的。