pgsql一行轉(zhuǎn)多行如何實(shí)現(xiàn)

小億
82
2024-10-27 01:41:52
欄目: 云計(jì)算

在PostgreSQL中,如果你想將一行數(shù)據(jù)轉(zhuǎn)換為多行,可以使用STRING_AGG()函數(shù)結(jié)合WITHIN GROUP (ORDER BY ...)語(yǔ)句來(lái)實(shí)現(xiàn)。下面是一個(gè)示例:

假設(shè)我們有一個(gè)名為my_table的表,其中有一個(gè)名為id的列和一個(gè)名為value的列,我們想要將具有相同id值的行合并,并將value列的值用逗號(hào)分隔。

SELECT id, STRING_AGG(value, ',') WITHIN GROUP (ORDER BY value) AS values
FROM my_table
GROUP BY id;

這將返回以下結(jié)果:

 id |    values
----+-------------
  1 | value1,value2
  2 | value3,value4

在這個(gè)例子中,我們首先使用GROUP BY子句按id列對(duì)數(shù)據(jù)進(jìn)行分組。然后,我們使用STRING_AGG()函數(shù)將每個(gè)分組中的value列的值連接成一個(gè)字符串,用逗號(hào)分隔。最后,我們使用WITHIN GROUP (ORDER BY value)對(duì)結(jié)果進(jìn)行排序。

0