Postgresql 具有类似“X”或类似“Y”值的分组id

Postgresql 具有类似“X”或类似“Y”值的分组id,postgresql,group-by,having,Postgresql,Group By,Having,表bo_sip_cti_event_day有以下列:uuid、hangup_子句,但我在许多记录中有许多与其他hangup_子句相同的uuid,例如:a、发起人_CANCEL、a、无应答、a、分配的_超时 我必须获得所有uuid,其中挂断原因是发起者取消,并且没有相同uuid的答案 到目前为止,我试过: 根据uuid的挂断原因(如“发起人取消”)和挂断原因(如“无应答”),从bo_sip_cti_事件日组中选择uuid 但是错误表明,挂起原因必须位于group by子句中或位于聚合函数中。在HA

表bo_sip_cti_event_day有以下列:uuid、hangup_子句,但我在许多记录中有许多与其他hangup_子句相同的uuid,例如:a、发起人_CANCEL、a、无应答、a、分配的_超时

我必须获得所有uuid,其中挂断原因是发起者取消,并且没有相同uuid的答案

到目前为止,我试过: 根据uuid的挂断原因(如“发起人取消”)和挂断原因(如“无应答”),从bo_sip_cti_事件日组中选择uuid 但是错误表明,挂起原因必须位于group by子句中或位于聚合函数中。

在HAVING子句中,处理聚合。在您的情况下,条件聚合:

select uuid
from bo_sip_cti_event_day 
group by uuid
having count(case when hangup_cause = 'ORIGINATOR_CANCEL' then 1 end) > 0
   and count(case when hangup_cause = 'NO_ANSWER' then 1 end) > 0;

这将为您提供两个挂起子句都存在的所有UUID。

Oops,对不起,我忘记了CASE关键字。请再试一次。效果很好!谢谢