sql:using group 通过在单独的字符串列表中检查值的存在性

13z8s7eq  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(361)

我正在尝试按orderid和lineid分组,并仅从包含单独字符串列表中的任何值的组中返回唯一的orderid和lineid。
下面是一些示例数据。

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'

我试过了

having (min(fieldOfInterest) in ('10xa','10002')) or (max(fieldOfInterest) in ('10xa','10002'))

但我不认为这会一直奏效。也许我可以在字符串列表和表中进行某种连接。

9wbgstp7

9wbgstp71#

在postgres中,我推荐聚合和 bool_or() :

select orderID, lineID
from mytable
group by orderiD, lineID
having bool_or(fieldOfInterest in ('10xa','10002'))

相关问题