Sql 查找其所有属性值都在另一个实体的属性值内的所有实体

Sql 查找其所有属性值都在另一个实体的属性值内的所有实体,sql,sql-server,join,Sql,Sql Server,Join,考虑下表: partyId PartyName AttributeId ------- ---------- ----------- 200167 Customer1 6444 200167 Customer1 6443 200167 Customer1 6442 200112 Customer2 6443 200133 Customer3 6443 200133 Customer3 6442 200155 Customer4 6449 20015

考虑下表:

partyId PartyName   AttributeId
------- ----------  -----------
200167  Customer1   6444
200167  Customer1   6443
200167  Customer1   6442
200112  Customer2   6443
200133  Customer3   6443
200133  Customer3   6442
200155  Customer4   6449
200155  Customer4   6442
Customer1有一组与之关联的AttributeId。我将把它称为Customer1的属性集。客户2和客户3的属性集完全在客户1的属性集中。但是,Customer 4的一个属性不在Customer1的属性集中(attributeId 6449)。我正在尝试编写一个SQL查询,该查询将生成一个独特的参与方列表,其中参与方的整个属性集位于customer1的属性集中,并且排除了其整个属性集不在customer1的属性集中的所有客户。在本例中,结果应为:

partyId PartyName  
------- ----------  
200112  Customer2
200133  Customer3

下面使用聚合并统计与customer 1匹配的给定customer的属性数:

select t.customerid
from t left join
     t t1
     on t1.attributeid = t.attributeid and
        t1.customerid = 'Customer1'
group by t.customerid
having count(t.customerid) = count(t1.customerid);

谢谢,戈登。正是我需要的!