一个表查询帮助 - 看起来很简单

时间:2017-04-13 14:23:37

标签: sql-server tsql

我有一个这样的表(没有PK):

Server_ID      Job_ID
1                 A
2                 A
3                 A
4                 A
1                 B
2                 B
3                 B
1                 C
2                 C

我需要查找不在所有Job_ID中的所有服务器(Server_ID)。 所以在这种情况下,它将是3和4(因为3不在JOB_ID&#39; C&#39;而4不在JOB_ID&#39; B&#39;和&#39; C&#39;)< / p>

有人知道一个简单的解决方案吗?怎么可能是一个简单的tsql查询呢?

1 个答案:

答案 0 :(得分:1)

您可以分两步构建查询:首先计算总工作数:

select  count(distinct job_id)
from    yourTable

然后计算每个job_id的{​​{1}}并过滤掉那些与总工作数相匹配的数

server_id

修改

要为每个select server_id from yourTable group by server_id having count(distinct job_id) <> ( select count(distinct job_id) from yourTable ) 获取缺少的job_id(根据评论中的要求),您可以使用server_id创建所有组合,然后将cross join与原始表一起使用您只能过滤不匹配的行

left join

您可以在工作中看到它here