【问题标题】:Find all entities where all of their attributes values are within the attribute values of another entity查找所有属性值都在另一个实体的属性值内的所有实体
【发布时间】:2019-04-09 12:11:55
【问题描述】:

考虑下表:

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 的属性集中。但是,客户 4 的属性之一不在客户 1 的属性集中(attributeId 6449)。我正在尝试编写一个 SQL 查询,该查询将产生一个不同的各方列表,其中该方的整个属性集在 customer1 的属性集中,并且排除了整个集不在 customer1 的属性集中的所有客户。在这个例子中,结果应该是:

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

【问题讨论】:

    标签: sql sql-server join


    【解决方案1】:

    以下使用聚合并计算给定客户与客户 1 匹配的属性数量:

    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);
    

    【讨论】:

    • 谢谢,戈登。正是我需要的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多