Oracle中pivot函数的用法是什么

avatar
作者
筋斗云
阅读量:0

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函数要求原始列的值必须是有限的,不能是一个范围或连续的值。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!