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)