温馨提示×

Oracle中pivot函数的用法是什么

小亿
113
2024-01-24 16:47:49
栏目: 云计算

Oracle中的PIVOT函数用于将行数据转换为列数据,即将一列中的多个值转换为多列。它的基本语法如下:

SELECT 列1, 列2, ... 
FROM 表
PIVOT (聚合函数(列名)
       FOR 列名
       IN (值1, 值2, ...))

其中,列1、列2等是要保留的非聚合列,聚合函数是要应用在列名上的聚合函数(例如,SUM、AVG、COUNT等),列名是要转换为列的原始列的名称,值1、值2等是原始列中的唯一值。

举例来说,假设有一个名为sales的表,包含以下列:product(产品名称)、region(地区)、quarter(季度)、amount(销售金额),我们可以使用PIVOT函数将地区作为列,季度作为行,计算每个季度每个地区的销售总额:

SELECT *
FROM (
  SELECT region, quarter, amount
  FROM sales
)
PIVOT (
  SUM(amount)
  FOR region
  IN ('东北' AS NE, '华北' AS NC, '华东' AS EC, '华南' AS SC, '西南' AS SW)
)

上述查询将返回一个结果集,其中包含季度作为行,以及NE(东北)、NC(华北)、EC(华东)、SC(华南)、SW(西南)作为列,每个单元格的值为对应地区在该季度的销售总额。

需要注意的是,PIVOT函数只能在查询中使用,不能在DML语句(如INSERT、UPDATE、DELETE)中使用。另外,PIVOT函数要求原始列的值必须是有限的,不能是一个范围或连续的值。

0