实现方式使用 array_to_string 和 array_agg 函数,具体语句如下:string_agg 把表达式变成一个数组string_agg 直接把一个表达式变成字符串。我们可以用string_agg()函数:select 姓名内置函数(半动态)Postgresql内置了tablefunc可实现pivot table的功能。当原表中的cat列有很多不同的值,那我们将会得到一个有很多列的表,并且我们需要手动声明每个列的列名及数据类型,显然这种体验非常不友好。自建函数(动态)动态的行转列我们通过plpgsql实现,大致的思路如下:判断value字段的数据类型,如果是数值型,则转入2.,否则转入3.对cat列中的每个distinct值使用sum,转成列对cat列中的每个distinct值使用string_agg,转成列实现代码示例:调用示例:

PostgreSQL 实现将多行合并转为列

PostgreSQL 实现将多行合并转为列

PostgreSQL 实现将多行合并转为列

PostgreSQL 实现将多行合并转为列

PostgreSQL 实现将多行合并转为列