每次两个 fields/columns 完全匹配时分配唯一 ID
Assign unique id each time two fields/columns are an exact match
大查询:
如果某人和日期完全匹配,我希望分配 'unique combination id'。因此对于每个特定时间 'person_id' 和特定日期时间是相同的,它们总体上分配了一个数字(时间将始终是 00:00:00 但只需要在那里记录)。这将是一个整体的唯一数字,而不是针对每个人的计数。希望这是有道理的。
下面是您想要的结果。所以你会看到第 1 行和第 5 行是相同的唯一组合,所以具有相同的 unique_combination_id.
person_id
Datetime
unique combination_id
1234
2016-04-01T00:00:00
1
1234
2016-05-04T00:00:00
2
9102
2018-05-17T00:00:00
3
5678
2019-09-01T00:00:00
4
1234
2016-04-01T00:00:00
1
使用 DENSE_RANK()
应该可以解决问题:
SELECT *,
DENSE_RANK() OVER(ORDER by person_id, datetime) as unique_combination_id
FROM tbl;
大查询:
如果某人和日期完全匹配,我希望分配 'unique combination id'。因此对于每个特定时间 'person_id' 和特定日期时间是相同的,它们总体上分配了一个数字(时间将始终是 00:00:00 但只需要在那里记录)。这将是一个整体的唯一数字,而不是针对每个人的计数。希望这是有道理的。
下面是您想要的结果。所以你会看到第 1 行和第 5 行是相同的唯一组合,所以具有相同的 unique_combination_id.
person_id | Datetime | unique combination_id |
---|---|---|
1234 | 2016-04-01T00:00:00 | 1 |
1234 | 2016-05-04T00:00:00 | 2 |
9102 | 2018-05-17T00:00:00 | 3 |
5678 | 2019-09-01T00:00:00 | 4 |
1234 | 2016-04-01T00:00:00 | 1 |
使用 DENSE_RANK()
应该可以解决问题:
SELECT *,
DENSE_RANK() OVER(ORDER by person_id, datetime) as unique_combination_id
FROM tbl;