将 ID 分配给配对组

Assign Ids to a paired group

我有一个 table,其中包含一些如下所示的资产信息:

| ID |  PairID | AssetName   | PairAssetName | 
|----|---------|-------------|---------------|
|  1 | 3       | Case1       | Case3         |
|  4 | 2       | Case4       | Case2         |
|  3 | 1       | Case3       | Case1         |
|  2 | 4       | Case2       | Case4         |

如您所见,ID 和 PairID 彼此相关,数​​据相同 table。我需要分配一个允许我以增量方式识别它们的组 ID。看起来像这样的东西:

| ID |  PairID | AssetName   | PairAssetName| GroupID |
|----|---------|-------------|--------------|---------|
|  1 | 3       | Case1       | Case3        | Group1  |
|  4 | 2       | Case4       | Case2        | Group2  |
|  3 | 1       | Case3       | Case1        | Group1  |
|  2 | 4       | Case2       | Case4        | Group2  |

这将使我能够以更简单的方式识别对,因为我知道有时有些行根本没有对。在 SQL 中有没有办法做到这一点?不用说Group1,但有了这个数字就绰绰有余了。

假设整数足以满足 groupid,那么一种方法是 dense_rank():

select t.*,
       dense_rank() over (order by case when id < pairid then id else pairid end,
                                   case when id < pairid then pairid else id end
                         ) as groupid                                   
from t;