oracle group by 拼接字符串
时间: 2023-07-30 18:04:31 浏览: 179
Oracle中分组后拼接分组字符串.pdf
在 Oracle 数据库中,可以使用 LISTAGG 函数来拼接字符串,语法如下:
```
SELECT column_name, LISTAGG(expression, 'separator') WITHIN GROUP (ORDER BY order_expression) AS concatenated_string
FROM table_name
GROUP BY column_name;
```
其中,`column_name` 是要分组的列名,`expression` 是要拼接的列名或表达式,`separator` 是要用来分隔拼接结果的字符串,`order_expression` 用于指定拼接结果中的顺序。
例如,如果有一个表 orders,其中包含 order_id 和 customer_id 两列,需要按照 customer_id 分组,并将每个分组内的 order_id 拼接成一个字符串,可以使用以下语句:
```
SELECT customer_id, LISTAGG(order_id, ',') WITHIN GROUP (ORDER BY order_id) AS order_list
FROM orders
GROUP BY customer_id;
```
执行结果将返回每个 customer_id 对应的 order_id 拼接结果,例如:
```
CUSTOMER_ID | ORDER_LIST
----------- | ------------------
1 | 1001,1005,1010
2 | 1003,1006,1008
3 | 1002,1004,1007
```
注意,LISTAGG 函数只能在 Oracle 11g 及以上版本中使用。如果您使用的是 Oracle 10g 或更早版本,则需要使用其他方法来拼接字符串。
阅读全文