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
Затем сгруппируйте по идентификатору и назначьте номер группы. Группы, однако, должны быть объединены, где это возможно, чтобы обеспечить представление, показанное в конечной группе.
Единственное решение, которое я могу придумать для этой проблемы, это использовать циклы, которых я бы предпочел избежать.
Любые идеи очень приветствуются.
Найл