oracle竖表查询转横表
时间: 2023-07-18 18:37:33 浏览: 171
你可以使用Oracle的PIVOT操作符来将竖表转换为横表。下面是一个简单的例子,假设你有一个名为“orders”的表,其中包含了客户订单的信息,如下所示:
| order_id | customer_id | order_date | product_name | quantity |
|----------|-------------|------------|--------------|----------|
| 1 | 100 | 2020-01-01 | Product A | 10 |
| 2 | 100 | 2020-01-02 | Product B | 5 |
| 3 | 200 | 2020-01-01 | Product A | 20 |
| 4 | 300 | 2020-01-03 | Product C | 15 |
要将此表转换为横表,以显示每个客户的所有订单,请使用以下查询:
```
SELECT *
FROM orders
PIVOT (
SUM(quantity)
FOR product_name IN ('Product A', 'Product B', 'Product C')
)
WHERE customer_id IN (100, 200);
```
这将返回以下结果:
| CUSTOMER_ID | ORDER_DATE_PRODUCT_A | ORDER_DATE_PRODUCT_B | ORDER_DATE_PRODUCT_C |
|-------------|---------------------|---------------------|---------------------|
| 100 | 10-Jan-20 | 02-Jan-20 | (null) |
| 200 | 01-Jan-20 | (null) | (null) |
在此查询中,PIVOT操作符将“product_name”列转换为列名,该列的值用于聚合“quantity”列的总和。在此示例中,我们选择了三个特定的产品名称,但您可以根据需要添加或删除列。最后,我们使用WHERE子句选择了我们想要显示的客户ID。
阅读全文