代码之家  ›  专栏  ›  技术社区  ›  Mzia

Postgres-使用重复的对按行分组(如果任何行为true),结果为true

  •  0
  • Mzia  · 技术社区  · 5 年前

    我有下表:

    source   | target | appear1 | appear2 
       1     |   a    |  true   | false  
       1     |   a    |  false  | true   
       2     |   j    |  false  | false   
       3     |   p    |  false  | false  
       4     |   w    |  true   | false   
       4     |   w    |  false  | false   
    

    我只需要输出每对源目标一次,如果出现单元格中的任何一个有真值,则此列中的新行必须有真值

    source   | target | appear1 | appear2 
       1     |   a    |  true   | true   
       2     |   j    |  false  | false   
       3     |   p    |  false  | false  
       4     |   w    |  true   | false   
    

    我该怎么做?

    0 回复  |  直到 5 年前
        1
  •  4
  •   a_horse_with_no_name    5 年前

    您可以为此使用布尔聚合:

    select source, 
           target, 
           bool_or(appear1) as appear1,
           bool_or(appear2) as appear2
    from the_table
    group by source, target
    order by source, target;
    

    在线示例: https://rextester.com/TOO42469