我有一个包含体育代码列表的代码表。我还有另一张桌子,里面有一份可以包含多个体育代码的工作人员名单。
我只想返回其体育代码可以覆盖在代码表中的工作人员。
如下所示:
在本例中,Jason拥有代码表中的所有代码,而Jackson只有一个代码短缺(codeID 3),因此只有Jason返回。
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')
发布于 2018-05-26 11:43:32
您可以尝试下面的示例假设员工拥有唯一的代码。
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)
https://stackoverflow.com/questions/50542299
复制相似问题