Как отфильтровать таблицу по отфильтрованной таблице - PullRequest
0 голосов
/ 26 мая 2018

У меня есть таблица кодов, содержащая список спортивных кодов.И у меня есть еще одна таблица, содержащая список сотрудников, которые могут содержать несколько спортивных кодов.

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

Вот так:

sample

В этом случае у Джейсона есть каждый код в таблице кодов, а у Джексона один код короткий (codeID 3), поэтому возвращается только Джейсон.

Declare @code table
              (
                  codeID varchar(4),
                  codeDes varchar(72)
                  Primary Key(codeID, codeDes)
              )

Insert into @code
Values ('1', 'apple picking'), ('2', 'pear picking'), ('3', 'farming')

Declare @staff table
               (
                   staffID int,
                   name varchar(8),
                   codeID varchar(4)
               )

Insert into @staff
Values (1, 'Jason', '1'), (1, 'Jason', '2'), 
       (1, 'Jason', '3'), (1, 'Jason', '4'), 
       (2, 'Jackson', '1'), (2, 'Jackson', '2')

1 Ответ

0 голосов
/ 26 мая 2018

Вы можете попробовать ниже пример предположения, что персонал имеет уникальный код.

SELECT staffId, Name
FROM @staff  s
INNER JOIN @code c ON c.codeID = s.codeID
GROUP BY StaffId, Name
HAVING COUNT(DISTINCT s.CodeId) = (SELECT COUNT(1) FROM @code)
...