首页  > 数据库 > oracle行转列经典完成, 运用PIVOT函数完成行转列

oracle行转列经典完成, 运用PIVOT函数完成行转列

数据库 2025-02-25 2

在Oracle中,将行转列为一种常见的操作,一般用于将多个列的值组合成一个单列的值。这种操作在数据剖析和报表生成中非常有用。下面是一个经典的行转列完成办法,运用的是Oracle的`LISTAGG`函数。

假定咱们有一个名为`students`的表,它有如下结构:

`id`:学生ID `subject`:学科称号 `score`:分数

咱们想要将每个学生的一切学科成果合并到一个列中,格局为`subject1:score1, subject2:score2, ...`。

下面是运用`LISTAGG`函数完成的SQL代码:

```sqlSELECT id, LISTAGG, ', 'qwe2 WITHIN GROUP AS scoresFROM studentsGROUP BY id;```

这段代码的解说如下:

`LISTAGG, ', 'qwe2`:运用`LISTAGG`函数将每个学生的一切学科和成果合并成一个字符串。这儿运用了`||`来衔接`subject`和`score`,`TO_CHAR`将分数转化为字符串。逗号和空格作为分隔符。 `WITHIN GROUP `:依照`subject`列的次序对成果进行排序。 `GROUP BY id`:依照学生ID分组,这样每个学生的一切学科成果都会被合并到一个列中。

请注意,`LISTAGG`函数是Oracle 11g及今后版别供给的。假如你运用的是Oracle 10g或更早的版别,你或许需求运用其他办法来完成行转列。

Oracle行转列经典完成:高效数据处理技巧

在Oracle数据库中,行转列是一种常见的数据处理需求。它将行中的多个值转化为一列中的多个值,然后更好地展现和剖析数据。本文将详细介绍Oracle中完成行转列的经典办法,包含PIVOT函数、CASE句子和UNPIVOT函数,帮助您高效处理数据。

运用PIVOT函数完成行转列

PIVOT函数简介

PIVOT函数是Oracle 11g及以上版别供给的一个强壮功用,用于将行数据转化为列数据。它能够将一个或多个列的值转化为列标题,并核算每个标题对应的行数据总和。

PIVOT函数语法

```sql

SELECT column_name, SUM(column_value)

FROM table_name

PIVOT (

SUM(column_value)

FOR column_name IN ('value1', 'value2', ..., 'valueN')

示例

假定咱们有一个名为`salesdata`的表,其间包含年份、产品和销售额。以下查询将产品作为列标题,年份作为数据,以检查每种产品每年的销售总额:

```sql

SELECT

FROM (

SELECT year, product, amount

FROM salesdata

PIVOT (

SUM(amount)

FOR product IN ('ProductA' AS ProductA, 'ProductB' AS ProductB, 'ProductC' AS ProductC)

运用CASE句子完成行转列

CASE句子简介

CASE句子是一种条件表达式,能够依据条件回来不同的值。经过运用CASE句子,能够模仿行转列的操作。

CASE句子语法

```sql

SELECT

year,

SUM(CASE WHEN product = 'ProductA' THEN amount ELSE 0 END) AS ProductA,

SUM(CASE WHEN product = 'ProductB' THEN amount ELSE 0 END) AS ProductB,

SUM(CASE WHEN product = 'ProductC' THEN amount ELSE 0 END) AS ProductC

FROM salesdata

GROUP BY year;

示例

与PIVOT函数示例相同的数据结构,但运用CASE句子完成:

```sql

SELECT

year,

SUM(CASE WHEN product = 'ProductA' THEN amount ELSE 0 END) AS ProductA,

SUM(CASE WHEN product = 'ProductB' THEN amount ELSE 0 END) AS ProductB,

SUM(CASE WHEN product = 'ProductC' THEN amount ELSE 0 END) AS ProductC

FROM salesdata

GROUP BY year;

运用UNPIVOT函数完成行转列

UNPIVOT函数简介

UNPIVOT函数是Oracle供给的用于将列数据转化成行数据的函数。与PIVOT函数相反,UNPIVOT函数能够将列数据转化成行数据,并从头结构表格。

UNPIVOT函数语法

```sql

SELECT ID, Name, Subject, Score

FROM score

UNPIVOT (

Score FOR Subject IN ('语文' AS 语文, '数学' AS 数学, '英语' AS 英语, '物理' AS 物理)

示例

假定咱们有以下表格:

```sql

学号 语文成果 数学成果 英语成果 物理成果

——————-———-———-———-

0 80 70 90

1 90 85 95

2 60 75 80

运用UNPIVOT查询将每个学生的成果转化为独自的行:

```sql

SELECT ID, Name, Subject, Score

FROM score

UNPIVOT (

Score FOR Subject IN ('语文' AS 语文, '数学' AS 数学, '英语' AS 英语, '物理' AS 物理)

本文介绍了Oracle中完成行转列的经典办法,包含PIVOT函数、CASE句子和UNPIVOT函数。经过这些办法,您能够高效地处理数据,更好地展现和剖析数据。在实践使用中,依据详细需求挑选适宜的办法,将有助于进步数据处理功率。


Copyright © 2016-2028零基础教程 Rights Reserved. XML地图