【问题标题】:SQL help for Group by clause on one field and specific record count condition on another field一个字段上的 Group by 子句和另一个字段上的特定记录计数条件的 SQL 帮助
【发布时间】:2020-10-13 18:56:54
【问题描述】:

需要帮助获取 SQL。我有以下表格。

根据Field2中有“abc”和“def”需要下面的结果记录

  • 每个值只出现一次,不多
  • 除了“abc”和“def”之外没有其他值。

预期结果

不应该出现在结果中的记录 enter image description here

我尝试了不同的实验

Select * from MYTABLE
WHERE FIELD1 in ('abc','def')
Group by Field1
Having Count(*) = 2

但我在这里做一些根本错误的事情,因为它也给了我“Member4”,因为它出现了两次“abc”

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: sql sql-server group-by pivot having-clause


【解决方案1】:

您可以在having 子句中使用条件聚合表达式:

select field1
from mytable
group by field1
having
        sum(case when field2 = 'abc' then 1 else 0 end) = 1
    and sum(case when field2 = 'def' then 1 else 0 end) = 1
    and sum(case when field2 not in ('abc', 'def') then 1 else 0 end) = 0
    

【讨论】:

    【解决方案2】:

    大多数数据库都支持字符串聚合。这可能是最简单的方法。例如,在 MySQL 语法中:

    select field1
    from t
    group by field1
    having group_concat(field2 order by field2) = 'abc,def';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 2016-12-15
      • 2016-06-29
      • 2019-05-11
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多