我正在处理 Oracle 中的一个问题,我正在努力“优雅地”解决这个问题。
我有一个包含三个不同标识符的数据提取:A、B、C
每个标识符可能出现在多于一行中,并且每一行可能具有这三个标识符中的一个或多个(即该列已填充或为空)。
我希望能够对具有 A、B 或 C 任意组合的所有记录进行分组,并为它们分配相同的组 ID。
提取表显示最终组应该是什么:
Rownum | A | B | C | End group
1 p NULL NULL 1
2 p r NULL 1
3 q NULL NULL 2
4 NULL r NULL 1
5 NULL NULL s 2
6 q NULL s 2
我最初的方法是为提取中的每一行分配一个 guid,并为三个标识符创建一个查找表:
GUID | IDENTIFIER | IDENTIFIER TYPE | GROUP | END GROUP
1 p A 1 1
2 p A 1 1
2 r B 2 1
3 q A 3 3
4 r B 2 1
5 s C 4 3
6 q A 3 3
6 s C 4 3
然后按标识符分组并分配组号。然而,这些组需要在可能的情况下进行组合,以提供在端组中显示的视图。
对于这个问题,我能想到的唯一解决方案是使用循环,我宁愿避免。
任何想法将不胜感激。
尼尔