SQL:使用GROUPBY根据单独的字符串列表检查值是否存在
我尝试按OrderID和lineID分组,并仅从包含单独字符串列表中任何值的组返回唯一的OrderID和lineID 下面是一些示例数据SQL:使用GROUPBY根据单独的字符串列表检查值是否存在,sql,postgresql,select,group-by,having-clause,Sql,Postgresql,Select,Group By,Having Clause,我尝试按OrderID和lineID分组,并仅从包含单独字符串列表中任何值的组返回唯一的OrderID和lineID 下面是一些示例数据 OrderID lineID positionID fieldOfInterest somefield1 somefield2 .... 1A2 10248 1 '10xa' - - 1A2 10248
OrderID lineID positionID fieldOfInterest somefield1 somefield2 ....
1A2 10248 1 '10xa' - -
1A2 10248 2 '42-vf' - -
1A2 10248 3 '10xb' - -
1A2 10249 2 '10xa' - -
1C3 11200 5 '10002' - -
1C3 10250 1 'N52O' - -
1V8 10250 7 'fas01' - -
1V8 10250 8 '10002' - -
. . . . . .
. . . . . .
. . . . . .
separate list to search groups against: ('10xa','10002')
我想要的结果是
OrderID lineID
1A2 10248 <------ group contained '10xa'
1A2 10249 <------ group contained '10xa'
1C3 11200 <------ group contained '10002'
1V8 10250 <------ group contained '10002'
但我认为这不会一直奏效。
也许我可以在字符串列表和表上进行某种连接。在Postgres中,我建议使用聚合和
bool\u或()
having (min(fieldOfInterest) in ('10xa','10002')) or (max(fieldOfInterest) in ('10xa','10002'))
select orderID, lineID
from mytable
group by orderiD, lineID
having bool_or(fieldOfInterest in ('10xa','10002'))