【问题标题】:T-SQL - Equal to both but not eitherT-SQL - 两者都相等,但都不相等
【发布时间】:2018-06-01 05:37:52
【问题描述】:

我正在尝试编写一个简单的查询,其中每个 ID 都需要同时具有产品 A 和 B,但两者都不需要。在我的示例中,我只希望 ID #3 和每个的产品返回,因为其他 ID 都不符合此条件。

我查看了 Count/Rank/Row_Number,但似乎无法弄清楚这一点。也许我看错了。有什么想法吗?

 ID Product 
 1  A
 2  A
 3  A
 3  A
 3  B
 4  A
 5  B
 6  B
 6  B

【问题讨论】:

    标签: sql sql-server sql-server-2008 tsql ssms


    【解决方案1】:

    使用group byhaving

    select id 
    from tbl 
    where product in ('A','B')
    group by id
    having count(distinct product) = 2
    

    【讨论】:

    • 这仅适用于 ID 列,但不能添加到 Product 和选择中的其他几个列。我可以将其放入子选择中,然后仅对查询结果进行内部联接吗?
    【解决方案2】:

    如果只有 2 个产品,您可以自行加入您的表:

    SELECT A.ID, A.Product, B.Product FROM [table] A INNER JOIN [table] B ON A.ID = B.ID AND A.Product != B.Product
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 2022-01-14
      • 2015-07-15
      • 2010-09-29
      • 2017-12-06
      • 2022-10-06
      • 2015-09-25
      相关资源
      最近更新 更多