利用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|
如果要将这些多行数据转换为多列数据,可以使用以下语句:
```sqlSELECT
*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表中的多列数据转换为多行数据,可以使用以下语句:
```sqlSELECT
*INTO
test_unpivot FROM
test_pivot UNPIVOT
( name
FOR id IN (1,2,3))
运行上述语句后,将生成一个新表:test_unpivot,其中只有三列:id(数字类型)、name(字符串类型),其值分别为apple、banana、orange。
从上面可以看出,利用Oracle的PIVOT和UNPIVOT函数,可以方便地实现多行数据转换为多列数据,也可以实现多列数据转换为多行数据的功能。