oracle纵表转横表
时间: 2024-09-11 12:15:50 浏览: 43
Oracle 数据显示 横表转纵表
Oracle数据库中的纵表转横表,也称为数据透视或表格重塑,是指将一列或多列的数据转换为行,以便更清晰地展示数据之间的关系。在传统的SQL查询中,这通常通过使用`PIVOT`或`UNPIVOT`操作来完成。
例如,假设有一个销售数据表`sales`,其中包含`product`, `date`, 和 `quantity`三列:
```sql
ID | Product | Date | Quantity
--|------------|---------
1 | A | 2022-01-01 | 100
2 | B | 2022-01-01 | 200
3 | A | 2022-01-02 | 150
4 | C | 2022-01-02 | 300
```
如果你想把`Quantity`按`Product`和`Date`组合成一行,可以这样做:
```sql
SELECT *
FROM sales
PIVOT (
SUM(Quantity)
FOR product IN ('A' AS 'Product_A', 'B' AS 'Product_B', 'C' AS 'Product_C')
) PIVOT_DATE (
FOR date IN (TO_DATE('2022-01-01') AS 'Date_01', TO_DATE('2022-01-02') AS 'Date_02')
);
```
这会返回类似这样的结果:
```sql
ID | Product_A | Product_B | Product_C | Date_01 | Date_02
----|-----------|-----------|-----------|---------|--------
1 | 100 | NULL | NULL | 100 | NULL
2 | NULL | 200 | NULL | NULL | 200
3 | 150 | NULL | NULL | NULL | 150
4 | NULL | NULL | 300 | NULL | 300
```
阅读全文