SQL объединяет несколько идентификаторов для создания идентификатора группы для повторяющихся записей

Я работаю над проблемой в Oracle, которую я пытаюсь решить «элегантно».

У меня есть извлечение данных с тремя разными идентификаторами: A, B, C

Каждый идентификатор может появляться в более чем одной строке, и каждая строка может иметь один или несколько из этих трех идентификаторов (то есть столбец заполнен или равен нулю).

Я хочу иметь возможность группировать все записи, которые имеют любую комбинацию из A, B или C, и назначать им одинаковый идентификатор группы.

Извлеките таблицу с указанием возможных групп:

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

Затем сгруппируйте по идентификатору и назначьте номер группы. Группы, однако, должны быть объединены, где это возможно, чтобы обеспечить представление, показанное в конечной группе.

Единственное решение, которое я могу придумать для этой проблемы, это использовать циклы, которых я бы предпочел избежать.

Любые идеи очень приветствуются.

Найл

Ответы на вопрос(2)

Ваш ответ на вопрос