Группа фильтров SQL на основе вхождения атрибута


Можно ли в (T-)SQL фильтровать группы записей по появлению определенного значения, как этот вопрос о фрейме данных Python ?

Например, из следующей таблицы мне нужны полные группы в качестве выходных данных, которые содержат 16 в виде Value.

ID Group Value
1    1   10
2    1   12
3    1   16
4    2   10
5    2   14
6    2   18
7    3   12
8    3   16
9    3   18

Результирующий результат, который я хочу, - это

ID Group Value
1    1   10
2    1   12
3    1   16
7    3   12
8    3   16
9    3   18

Согласно документации и ошибкам, которые я получаю, GROUP BY или PARTITION BY и HAVING работает только при суммировании общего значения.

2 2

2 ответа:

Попробуйте это:

SELECT * FROM tableName
WHERE group in 
(SELECT distinct group from tableName where value = 16)

Внутренний запрос перечислит все группы с value = 16. Внешний запрос будет выбирать строки только с этими группами.

Можно использовать EXISTS:

SELECT *
FROM tab t1
WHERE EXISTS (SELECT 1
              FROM tab t2
              WHERE t1.[group] = t2.[group]
                AND t2.[Value] = 16)