📜  oracle 列表函数 - SQL (1)

📅  最后修改于: 2023-12-03 15:18:09.182000             🧑  作者: Mango

Oracle 列表函数 - SQL

Oracle 列表函数是指一类能够产生行列表的 SQL 函数,包括 unpivot 和 pivot 等。这些函数用于在 SQL 查询中更灵活地操作数据。本文将介绍 Oracle 列表函数的基本知识和使用方法。

语法和示例
unpivot

unpivot 函数可以将一列值转换成多行。其语法如下:

SELECT *
FROM
  table_name
UNPIVOT
(
  <new_column_name> FOR <old_column_name> IN (<column_list>)
)

其中,table_name 是需要操作的表名,new_column_name 是新的列名,old_column_name 是需要操作的列名,column_list 是需要进行 unpivot 操作的列列表。

例如,假设我们要将以下表格:

Name | Qtr1 | Qtr2 | Qtr3 | Qtr4
-----|------|------|------|-----
John | 100  | 200  | 300  | 400
Jane | 200  | 300  | 400  | 500
Mike | 300  | 400  | 500  | 600

转换成以下表格:

Name | Quarter | Total
-----|---------|------
John | Qtr1    | 100
John | Qtr2    | 200
John | Qtr3    | 300
John | Qtr4    | 400
Jane | Qtr1    | 200
Jane | Qtr2    | 300
Jane | Qtr3    | 400
Jane | Qtr4    | 500
Mike | Qtr1    | 300
Mike | Qtr2    | 400
Mike | Qtr3    | 500
Mike | Qtr4    | 600

可以使用以下 SQL 语句:

SELECT Name, Quarter, Total
FROM
  quarterly_sales
UNPIVOT
(
  Total FOR Quarter IN (Qtr1, Qtr2, Qtr3, Qtr4)
)
pivot

pivot 函数可以将行转换成列。其语法如下:

SELECT *
FROM
(
  SELECT <row_column>, <pivot_column>, <value_column>
  FROM <table_name>
)
PIVOT
(
  <aggregate_function>(<value_column>)
  FOR <pivot_column> IN (<pivot_value_list>)
)

其中,table_name 是需要操作的表名,row_column 是需要保留的行信息,pivot_column 是需要转换成列的列名,value_column 是需要操作的值的列名,aggregate_function 是聚合函数名称(例如 SUMAVG 等),pivot_value_list 是需要作为列的值的列表。

例如,假设我们要将以下表格:

Quarter | John | Jane | Mike
--------|------|------|-----
Qtr1    | 100  | 200  | 300
Qtr2    | 200  | 300  | 400
Qtr3    | 300  | 400  | 500
Qtr4    | 400  | 500  | 600

转换成以下表格:

Quarter | John | Jane | Mike
--------|------|------|-----
Qtr1    | 100  | 200  | 300
Qtr2    | 200  | 300  | 400
Qtr3    | 300  | 400  | 500
Qtr4    | 400  | 500  | 600
Total   | 1000 | 1400 | 1800

可以使用以下 SQL 语句:

SELECT *
FROM
(
  SELECT Quarter, Name, Total
  FROM quarterly_sales
)
PIVOT
(
  SUM(Total)
  FOR Name IN ('John', 'Jane', 'Mike')
)
总结

本文介绍了 Oracle 列表函数 unpivot 和 pivot 的基本知识和使用方法。这些函数可以帮助程序员更灵活地操作 SQL 查询中的数据。