我有一个如下所示的表:
column1 | column2 | column3 | .... | column_n
----------------------------------------------
null | null | val | .... | null
val | null | null | .... | null
null | val1 | null | .... | val2
我想获得一个聚合不同列的所有值的查询结果 . 非空值的范围在0和2之间,其中1是常见情况,0或2是边缘情况 . 结果应如下所示:
column1 | column2 | column3 | .... | column_n | result
-------------------------------------------------------
null | null | val | .... | null | val
val | null | null | .... | null | val
null | val1 | null | .... | val2 | val1, val2
值是字符串 . 有没有人知道如何实现这一目标?
提前致谢 .
3 回答
CONCAT_WS
函数应该在这里工作:NULL
值将自动从生成的CSV输出中删除 .演示
如果表具有主键(
id
),则可以在通用解决方案中使用jsonb . 您不必知道其他列的数量和名称:要使用PostgreSQL聚合列,可以使用
||
运算符:另一种解决方案,您可以使用
concat
函数,但忽略NULL
值 .如果需要分隔符,可以使用
concat_ws
函数,"_ws"表示"with_separator"你可以找到完整的信息here