Sql server 根据另一列的值选择没有特定值的行

Sql server 根据另一列的值选择没有特定值的行,sql-server,Sql Server,我的问题是: 我有一张桌子 SkillID EmpCode ------------------------------ 2 A101 4 A101 5 A101 8 A101 4 A102 3

我的问题是:

我有一张桌子

     SkillID            EmpCode
    ------------------------------
    2                   A101
    4                   A101
    5                   A101
    8                   A101
    4                   A102
    3                   A102
    1                   A102
    6                   A102
    5                   A102
    7                   A102
现在我必须选择没有skillid1、6和7的EmpCode。 在本例中,应给出EmpCodeA101作为结果。 只有不包括SkillID 1、6和7的EmpCodes才应该是结果

尝试:

SELECT EmpCode
FROM mytable
GROUP BY EmpCode
HAVING COUNT(CASE WHEN SkillID IN (1, 6, 7) THEN 1 END) = 0

您也可以使用
不存在

SELECT DISTINCT EmpCode
FROM mytable AS t1
WHERE NOT EXISTS (
  SELECT 1
  FROM mytable AS t2
  WHERE t1.EmpCode = t2.EmpCode AND t2.SkillID IN (1, 6, 7) )
试试:

SELECT EmpCode
FROM mytable
GROUP BY EmpCode
HAVING COUNT(CASE WHEN SkillID IN (1, 6, 7) THEN 1 END) = 0

您也可以使用
不存在

SELECT DISTINCT EmpCode
FROM mytable AS t1
WHERE NOT EXISTS (
  SELECT 1
  FROM mytable AS t2
  WHERE t1.EmpCode = t2.EmpCode AND t2.SkillID IN (1, 6, 7) )

下面的代码是t-sql:

SELECT DISTINCT EmpCode
FROM Table1
WHERE SkillID NOT IN (1, 6, 7)

以下代码在t-sql中:

SELECT DISTINCT EmpCode
FROM Table1
WHERE SkillID NOT IN (1, 6, 7)