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