Select 多行合并为一行
Select multiple rows into a single row
我有一个 table 列 "Sequence-ID"、"Event-ID"、"Value"
一个序列最多属于5个事件,每个事件有一个值
例如:
|Sequence-ID | Event-ID | Value |
|------------|----------|-------|
|1 | 1| 7|
|1 | 2| 2|
|1 | 3| 5|
|1 | 4| 9|
|1 | 5| 12|
|2 | 1| 15|
|2 | 2| 8|
|2 | 3| 10|
|2 | 4| 21|
|2 | 5| 17|
如何select将每个序列排成一行,用分号分隔?
|Sequence-ID |Value |
|------------|-------------|
|1 |7;2;5;9;12 |
|2 |15;8;10;21;17|
使用STRING_AGG(col1)
select Sequence-ID , STRING_AGG(Value , ';') AS newValue
from table
GROUP BY Sequence-ID;
您可以使用 STRING_AGG 函数来完成,这里是 SQL 查询:
SELECT ID, STRING_AGG(Value, ';') AS Names
FROM TAB
GROUP BY Sequence-ID;
也许您需要使用 STRING_AGG 功能?
你可以这样做:
SELECT Sequence-ID, string_agg(Value::text, ';'::text) from table group by Sequence-ID
我有一个 table 列 "Sequence-ID"、"Event-ID"、"Value"
一个序列最多属于5个事件,每个事件有一个值 例如:
|Sequence-ID | Event-ID | Value |
|------------|----------|-------|
|1 | 1| 7|
|1 | 2| 2|
|1 | 3| 5|
|1 | 4| 9|
|1 | 5| 12|
|2 | 1| 15|
|2 | 2| 8|
|2 | 3| 10|
|2 | 4| 21|
|2 | 5| 17|
如何select将每个序列排成一行,用分号分隔?
|Sequence-ID |Value |
|------------|-------------|
|1 |7;2;5;9;12 |
|2 |15;8;10;21;17|
使用STRING_AGG(col1)
select Sequence-ID , STRING_AGG(Value , ';') AS newValue
from table
GROUP BY Sequence-ID;
您可以使用 STRING_AGG 函数来完成,这里是 SQL 查询:
SELECT ID, STRING_AGG(Value, ';') AS Names
FROM TAB
GROUP BY Sequence-ID;
也许您需要使用 STRING_AGG 功能?
你可以这样做:
SELECT Sequence-ID, string_agg(Value::text, ';'::text) from table group by Sequence-ID