如何选择关系只有一个条件的客户

how to select customer having relations of only one condition

提问人:Ana 提问时间:11/8/2023 最后编辑:SelVaziAna 更新时间:11/8/2023 访问量:28

问:

我有dbo。客户和 dbo.CustomerRelations 表。

dbo。客户:

CustomerId、CustomerType

dbo。客户关系:

MainCustomerId、RelatedCustomerId

例如,主客户有许多不同类型的 RelatedCustomers:

MainCustomerId 相关客户 Id 相关客户类型
55 111 1
55 112 1
55 113 4
55 114 3
55 115 3
55 116 1
66 661 1
66 662 1
77 57秒 1
77 772 3
88 881 1
88 882 1
88 883 1

因此,我想获得主要客户,这些客户仅与客户相关,客户类型例如 1。根据我上面给出的示例,我想编写一个查询,它将为我提供客户: 88 和 66,他们只有相关客户,他们有类型 1。 我不想获得其他主要客户,这些客户具有不同客户类型(包括类型 1)的关系,但我只想获得主要客户,他们只有类型 1 的关系。

谢谢。

SQL 选择

评论

0赞 SelVazi 11/8/2023
请标记您正在使用的 rdbms

答:

0赞 SelVazi 11/8/2023 #1
SELECT MainCustomerId
FROM mytable
GROUP BY MainCustomerId
HAVING COUNT(CASE WHEN RelatedCustomerType = 1 THEN 1 END) >= 1
       and COUNT(CASE WHEN RelatedCustomerType <> 1 THEN 1 END) = 0

我们需要选择验证两个条件的客户:

  1. 拥有类型 1 的记录:COUNT(CASE WHEN RelatedCustomerType = 1 THEN 1 END) >= 1
  2. 不要有除 1 不同的任何其他类型:COUNT(CASE WHEN RelatedCustomerType <> 1 THEN 1 END) = 0

评论

1赞 Ana 11/9/2023
非常感谢,这真的很有帮助。我在sql查询结果中得到了我想要的东西。