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查询呢?
答案 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