listagg()函数用法
时间: 2023-07-26 15:07:30 浏览: 345
listagg()函数是Oracle数据库中的一个聚合函数,用于将一组值连接成一个字符串。
其基本语法如下:
```
LISTAGG(expression, separator) WITHIN GROUP (ORDER BY column)
```
其中,expression是要连接的列或表达式,separator是连接分隔符,column是用于排序的列。
举个例子,假设我们有以下一张订单表:
| OrderID | CustomerID | ProductName |
| ------- | ---------- | ----------- |
| 1 | 1001 | Apple |
| 2 | 1002 | Orange |
| 3 | 1001 | Banana |
| 4 | 1003 | Mango |
| 5 | 1002 | Pear |
如果我们想要按照CustomerID将ProductName连接起来,用逗号分隔,可以使用以下语句:
```
SELECT CustomerID, LISTAGG(ProductName, ', ') WITHIN GROUP (ORDER BY OrderID) AS ProductList
FROM Orders
GROUP BY CustomerID;
```
执行结果如下:
| CustomerID | ProductList |
| ---------- | --------------------- |
| 1001 | Apple, Banana |
| 1002 | Orange, Pear |
| 1003 | Mango |
注意,如果不指定WITHIN GROUP (ORDER BY column),则结果的顺序是不确定的。如果需要保证顺序,则必须指定ORDER BY。
阅读全文