根据另一列合并一列中的值

时间:2016-02-17 17:35:17

标签: sql postgresql coalesce

如何合并由另一列分组的列中的值?

e.g。如何按列1值合并第2列值?请转到以下内容:

Column 1|Column 2
-----------------
A       |Bob
A       |
B       |Mary
C       |
C       |Kevin
C       |
D       |
D       |

进入这个:

Column 1|Column 2
-----------------
A       |Bob
B       |Mary
C       |Kevin
D       |

谢谢!

2 个答案:

答案 0 :(得分:1)

使用聚合。这是一种方式:

select col1, max(col2)
from t
group by col1;

答案 1 :(得分:1)

select
  col1, 
  unnest(
    coalesce(
      (array_agg(distinct col2) filter (where col2 is not null)),
      '{null}'
    )
  ) 
from t 
group by col1;

更复杂,但也适用于

等数据
Column 1|Column 2
-----------------
A       |Bob
A       |Marley
B       |Mary
C       |
C       |Kevin
C       |Costner
D       |
D       |