Это загадочная задача SQL. Я хотел бы сделать это с помощью запроса вместо того, чтобы переходить курсором и делать это «трудным путем».
Если у меня есть две таблицы TableA и TableB, каждая со столбцом группировки, как показано ниже:
TableA TableB
------------- -------------
id group id group
------ ------ ------ ------
1 D 1 X
2 D 2 X
3 D 3 Y
4 D 4 Y
4 E 5 Y
5 E 5 Z
5 F 6 Z
Обратите внимание, что имена групп не то же имя.
Я хочу знать, состоит ли данная группа TableB полностью из идентификаторов, которые также сгруппированы в любой группе в TableA. Группа TableA может иметь больше идентификаторов, чем группа TableB, если она имеет все те же идентификаторы, что и группа TableB. Идентификаторы могут входить в несколько групп в любой таблице.
Из приведенных выше таблиц я должен выяснить, что группа X из Таблицы B соответствует группе в Таблице A, а группы Y и Z - нет.
Я пробовал много разных запросов, подзапросов, рекурсивных CTE. Я только закончил с неправильными результатами и головными болями. Реальный набор данных значительно больше, поэтому производительность тоже следует учитывать. К сожалению, это означает, что решение перекрестного соединения, предложенное в ответе ниже, не будет работать.
Возможно ли это даже с SQL?