从横到竖:Oracle数据库实现横表变纵表操作(oracle横表变纵表)

如何将横表改写为纵表?基于Oracle数据库,通过PIVOT语句,可以实现将横表转成纵表的操作,即可以实现从横到竖的变换。

横表也称之三纬表或多维表。它也叫竖横表,横表是由多个表格拼接起来的报表,比如订单信息表,客户信息表,订单货品表等等,就组成了一张横表,如下图:

![横表](05080342_z0rbe1kjtjk.png)

PIVOT语句就是用来将横表转换成纵表,其使用方式如下:

“`sql

SELECT *

FROM

(SELECT …from table)

PIVOT

(sum(column)

FOR columnname IN (value_1, value_2, value_n)

)

其中,“select”子句用于指定查询结果字段;“for”子句用于指定要转换成纵表的字段;“in”子句用于指定要查询的参数值。
下面,我以上图中的横表为例,说明如何将其转换为纵表。具体语句为:

```sql
SELECT *
FROM
(SELECT 客户ID, 客户名, 产品ID, 产品名, 数量 FROM ORDERS)
PIVOT
(SUM(数量)
FOR 产品ID IN (1111,2222,3333)
)

以上语句执行后,会生成以下结果:

![纵表](05080343_3cf0pzxmwyl.png)

从上述示例可知,Oracle数据库通过PIVOT语句可以实现将横表转换为纵表,也就是从横到竖的变换,方便进行表格的读取、查看。


数据运维技术 » 从横到竖:Oracle数据库实现横表变纵表操作(oracle横表变纵表)