Выберите строки, в которых столбец в разных строках должен иметь в точности значения - PullRequest
0 голосов
/ 09 октября 2019

Я хочу выбрать userid, где есть сертификаты BA + B (может быть BA + B + C , параметрически от приложения) BA а также B оба значения.

Пример таблицы данных:

id, userid, certification
1    1         A
2    1         BA
3    1         C
4    2         B
5    2         C
6    2         BA

Только userid=2, имеющий сертификаты BA , а также B . Ожидаемый результат:

userid
 2

Ответы [ 2 ]

4 голосов
/ 09 октября 2019

Do GROUP BY. Используйте HAVING с COUNT DISTINCT, чтобы убедиться, что есть BA и B.

select userid 
from MyTable
where certification IN ('B', 'BA')
group by userid
having count(distinct certification ) = 2
0 голосов
/ 09 октября 2019

Попробуйте выполнить запрос ниже:

declare @tbl table (id int, userid int, certification varchar(5));
insert into @tbl values
(1, 1, 'A' ),
(2, 1, 'BA'),
(3, 1, 'C' ),
(4, 2, 'B' ),
(5, 2, 'C' ),
(6, 2, 'BA');   

select userid 
from @tbl
group by userid
having sum(case when certification = 'B' then 1 else 0 end) > 0
and sum(case when certification = 'BA' then 1 else 0 end) > 0

Для каждого userid необходимо иметь хотя бы одну B и одну BA сертификацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...