oracle字段拼接行转列
时间: 2023-11-01 07:59:26 浏览: 130
可以使用Oracle的PIVOT操作将行转列,然后使用字符串拼接函数将多行数据合并成一行。
举个例子,假设我们有以下表格:
```
CREATE TABLE orders (
order_id NUMBER,
product_name VARCHAR2(50),
quantity NUMBER
);
INSERT INTO orders VALUES (1, 'Product A', 10);
INSERT INTO orders VALUES (1, 'Product B', 5);
INSERT INTO orders VALUES (2, 'Product A', 20);
INSERT INTO orders VALUES (2, 'Product C', 15);
```
现在我们想要将每个订单的产品名称和数量拼接成一行,可以使用以下SQL语句:
```
SELECT order_id,
LISTAGG(product_name || ': ' || quantity, ', ') WITHIN GROUP (ORDER BY product_name) AS products
FROM (
SELECT order_id,
product_name,
quantity
FROM orders
)
PIVOT (
SUM(quantity)
FOR product_name IN ('Product A', 'Product B', 'Product C')
)
GROUP BY order_id;
```
这个查询将返回以下结果:
```
ORDER_ID | PRODUCTS
---------|------------------------
1 | Product A: 10, Product B: 5
2 | Product A: 20, Product C: 15
```
在这个查询中,我们首先使用PIVOT操作将产品名称转换成列,然后使用LISTAGG函数将每个产品的名称和数量拼接成一行。最后,我们按照订单ID进行分组。
阅读全文