利用Oracle实现多行数据转换为多列数据(oracle多行变多列)

Oracle是一款功能强大的关系数据库管理系统,可以用来实现多行数据转换为多列数据的功能。通常来说,表中的行字段被称为’列’,而列字段被称为’行’。要将多行数据转换为多列数据,需要使用Oracle中的PIVOT和UNPIVOT函数。

PIVOT函数是用来将行转换为列的函数,其用法如下:

“`sql

SELECT

— Select columns

INTO

— Output table

FROM

— Source table

PIVOT

(sum(column_expr)

FOR pivot_column IN (pivot_values)


例如,假设有一张表叫test,其中有两个字段:id(数字类型)和name(字符串类型),每条记录有不同的值:

| id | name |
|----|-------|
| 1 | apple |
| 2 | banana|
| 3 | orange|

如果要将这些多行数据转换为多列数据,可以使用以下语句:

```sql
SELECT
*
INTO
test_pivot
FROM
test
PIVOT
(
SUM(name)
FOR id IN (1,2,3)
)

运行上述语句后,将生成一个新表test_pivot,其中只有三列:1、2、3,每列的值分别为apple、banana、orange。

UNPIVOT函数是用来将列转换为行的函数,其用法如下:

“`sql

SELECT

— Select columns

INTO

— Output table

FROM

— Source table

UNPIVOT

(expr

FOR unpivot_column IN (unpivot_values)


例如,要将上面的test_pivot表中的多列数据转换为多行数据,可以使用以下语句:

```sql
SELECT
*
INTO
test_unpivot
FROM
test_pivot
UNPIVOT
(
name
FOR id IN (1,2,3)
)

运行上述语句后,将生成一个新表:test_unpivot,其中只有三列:id(数字类型)、name(字符串类型),其值分别为apple、banana、orange。

从上面可以看出,利用Oracle的PIVOT和UNPIVOT函数,可以方便地实现多行数据转换为多列数据,也可以实现多列数据转换为多行数据的功能。


数据运维技术 » 利用Oracle实现多行数据转换为多列数据(oracle多行变多列)