首页 > 数据库 >ORACLE UNPIVOT函数

ORACLE UNPIVOT函数

时间:2023-07-26 13:23:11浏览次数:44  
标签:函数 UNPIVOT mode year ORACLE PIVOT order SELECT

语法

 

 

   函数用途: UNPIVOT 函数用来将列值转换为行值.

  • 1. INCLUDE | EXCLUDE NULLS 子句参数可以控制在结果集中是否保留值为NULL的行(新生成的行,即PIVOT_FOR_CLAUSE参数值)。当省略这个控制参数时,默认为EXCLUDE NULLS,即去除空值行。

  • 2. 列转行后结果集中生成的新列一般为度量值。

  • 3. PIVOT_FOR_CLAUSE参数用来定义列转行后新的行所在的列名。比如,将FEDERER,NADAL,NOVAK三个字段(列)转为行后,列名为LEGEND,其对应PIVOT_FOR_CLAUSE参数为 FOR LEGEND(或 FOR "LEGEND").

  • 4. unpivot_in_clause参数用来定义将要进行列转行的所有列名,这些列名在结果集中最终将变为参数PIVOT_FOR_CLAUSE的行值。可选的AS子句即将转为行的列值重命名。

   由于unpivot函数在列转行操作中将列值转换成了一个字段的所有值(即生成一个新列),因此,所有这些列值的数据类型必须保持一致。否则会报ORA-01790:表达示必须具有与对应表达式相同的数据类型。

   示例:
   原表数据(https://blog.csdn.net/RogerFedererGO/article/details/131915274?spm=1001.2014.3001.5501):

CREATE TABLE pivottable AS
SELECT * FROM
(SELECT EXTRACT(YEAR FROM order_date) year, order_mode, order_total FROM orders)
PIVOT
(SUM(ordertotal) FOR order_mode IN ('direct' AS Store, 'online' AS Internet));
SELECT * FROM pivot_table ORDER BY year;

 


   (1) EXclude nulls:

SELECT * FROM pivot_table
 UNPIVOT (yearly_total FOR order_mode IN (store AS 'direct',
 internet AS 'online'))
 ORDER BY year, order_mode;

 

  

 

(2) INclude nulls:

SELECT * FROM pivot_table
 UNPIVOT INCLUDE NULLS 
 (yearly_total FOR order_mode IN (store AS 'direct', internet AS 'online'))
 ORDER BY year, order_mode;

 

参考文档 ORALCE官网 SQL Language Reference:https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/About-SQL-Functions.html#GUID-D51AB228-518C-4213-8BD4-F919623D105E

标签:函数,UNPIVOT,mode,year,ORACLE,PIVOT,order,SELECT
From: https://www.cnblogs.com/rogerfederer/p/17582203.html

相关文章

  • 无涯教程-jQuery - bind( type, data, fn )方法函数
    bind(type,[data],fn)方法将处理程序绑定到每个匹配元素的一个或多个事件(如click)。也可以绑定自定义事件。bind(type,[data],fn)-语法selector.bind(type,[data],fn)这是此方法使用的所有参数的描述-type   - 一种或多种事件类型,以空格分隔。data  ......
  • Oracle数据完整性和锁机制
    Oracle数据完整性和锁机制本课内容属于Oracle高级课程范畴,内容略微偏向理论性,但是与数据库程序开发和管理、优化密切相关;另外本课的部分内容在前面章节已经涉及,请注意理论联系实际。事务  事务(Transaction)从通讯的角度看:是用户定义的数据库操作序列,这些操作要么全做、要么......
  • ORACLE函数大全
    ORACLE函数大全SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制数;SQL>selectascii('A')A,ascii('a')a,ascii('0')zero,ascii('')spacefromdual;      A        A     ZERO    SPACE------------------------------------......
  • 15表达/生成式 内置函数
    三元表达式使用场景:二选一的时候推荐使用三元表达式#如果用户名是jason则打印管理员否则打印DSB(正常写的时候)username=input('username>>>:').strip()ifusername=='jason':print('管理员')else:print('DSB')"""不够简化"&quo......
  • python 函数 定义参数类型
    Python函数参数类型的定义在Python中,函数是一种非常重要的编程概念,它可以将一段代码逻辑封装成一个可重复使用的块。函数的参数类型的定义对于函数的正确使用和调用至关重要。本文将介绍Python中函数参数类型的定义方法,并给出一些代码示例。为什么要定义函数参数类型Python......
  • 【d2l】【常见函数】【6】 detach()、detach_()
    都是pytorch里的方法,作用是让当前张量停止进入计算图具体的区别参考:https://cloud.tencent.com/developer/article/1659274......
  • Django的render函数输出到html页面出现乱码
    有三种方法:在页面中设置编码即可解决<metacharset="utf-8">在视图函数中设置响应对象的字符编码fromdjango.httpimportHttpResponsedefmy_view(request):response=HttpResponse('hello')response['Content-Type']='text/plain;......
  • python 中fill函数
    Python中fill函数的实现作为一名经验丰富的开发者,我很乐意教会新手如何实现Python中的fill函数。在本文中,我将向你展示整个过程的步骤,并为每一步提供相应的代码和注释。整体流程下面的表格展示了实现Python中fill函数的整个流程。步骤描述1创建一个新的字符串2判......
  • C语言之函数
    函数一个c语言项目只能有一个main函数函数是什么?函数是一段可重复使用的代码块,用于执行特定的任务。它接受输入参数,执行一系列操作,并返回一个值。在C语言中,函数由函数头和函数体组成。函数头包含函数的返回类型、函数名和参数列表。函数体包含函数的具体实现代码。通过调......
  • 函数连续、可导、可微之间的关系(精简)
    函数连续与可导之间的关系:多元函数连续与可导之间互相无关。也就是说,函数连续不一定可导,函数可导不一定连续。这是由于多元函数趋近某个点的方向任意性,导致某个函数不连续但却在这一点可导,或者某个函数连续但在某个方向上没有导数。 函数连续与可微之间的关系:函数可微一定连......