【问题标题】: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';