sql server—一个字段上的GROUPBY子句和另一个字段上的特定记录计数条件的sql帮助

von4xj4u  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(421)

需要帮助获取sql。我有一张table。

需要以下结果记录,因为字段2中有“”和“def”
每个值只出现一次
除“”和“def”外,没有其他值。
预期结果

不应在结果中的记录在此处输入图像描述
我试过不同的实验

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

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

blpfk2vs

blpfk2vs1#

可以在中使用条件聚合表达式 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
tag5nh1u

tag5nh1u2#

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

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

相关问题