这听起来像是一个非常简单的查询,但是我以前从未需要过此计算。我正在使用SQL Management Studio和SQL Server 2008。
我有一个表 ct_workers ,其中包含各个员工,还有另一个表cs_facilities,该表显示了他们工作的站点。
表ct_workers中有一个字段 person (每个人的主要ID),还有一个字段设施,该字段将员工链接到 cs_facilities 通过字段 guid
我希望显示所有具有2个或更多设施的工人。 我虽然已经在使用Excel或行号,但是肯定是一种简单有效的方法吗?
有人可以帮助吗?
谢谢
答案 0 :(得分:1)
您可以将GROUP BY
与HAVING
一起使用
SELECT cw.person
FROM ct_workers cw
GROUP BY cw.person
HAVING COUNT(DISTINCT cw.facility) >= 2
答案 1 :(得分:0)
您的问题建议您可以使用聚合:
select w.person
from ct_workers w
group by w.person
having min(w.facility) <> max(w.facility); -- at least 2 values
但是,如果person
是ct_workers
中的唯一键,那么一个人只能在一个设施中。因此,您的问题没有任何意义。实际上,您应该有一个联结表,每个人和每个设施都有一行。