对于我正在努力解决的问题,我需要一些帮助。
表格示例:
ID |Identifier1 | Identifier2
---------------------------------
1 | a | c
2 | b | f
3 | a | g
4 | c | h
5 | b | j
6 | d | f
7 | e | k
8 | i |
9 | l | h
我想在两列之间对彼此相关的标识符进行分组,并分配一个唯一的组ID。
所需输出:
Identifier | Gr_ID | Gr.Members
---------------------------------------------------
a | 1 | (a,c,g,h,l)
b | 2 | (b,d,f,j)
c | 1 | (a,c,g,h,l)
d | 2 | (b,d,f,j)
e | 3 | (e,k)
f | 2 | (b,d,f,j)
g | 1 | (a,c,g,h,l)
h | 1 | (a,c,g,h,l)
j | 2 | (b,d,f,j)
k | 3 | (e,k)
l | 1 | (a,c,g,h,l)
i | 4 | (i)
注意:“ Gr.Members”列不是必需的,大部分用于更清晰的视图。
因此,组的定义是:如果一行与该组的至少一行共享至少一个标识符,则该行属于该组
但是必须将组ID分配给每个标识符(由两列的并集选择)而不是行。
关于如何构建查询以提供所需输出的任何帮助?
谢谢。
更新:以下是一些带有预期输出的额外样本集。
给定表:
Identifier1 | Identifier2
----------------------------
a | f
a | g
a | NULL
b | c
b | a
b | h
b | j
b | NULL
b | NULL
b | g
c | k
c | b
d | l
d | f
d | g
d | m
d | a
d | NULL
d | a
e | c
e | b
e | NULL
预期的输出:所有记录应属于同一组,组ID = 1。
给定表:
Identifier1 | Identifier2
--------------------------
a | a
b | b
c | a
c | b
c | c
预期的输出:记录应该在同一组中,组ID = 1。
相关分类