在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)行排序。