首页 > 数据库 >【Oracle】行转列的函数wm_concat,listagg,xmlagg,pivot以及动态行转列

【Oracle】行转列的函数wm_concat,listagg,xmlagg,pivot以及动态行转列

时间:2023-07-05 11:12:13浏览次数:44  
标签:iit group wm 转列 listagg where select

【Oracle】行转列的几种情况

表的数据如下
image

朴实无华的函数

1.wm_concat

使用格式:

select 分组字段,wm_concat(要转换的列名) from 表名 group by 分组字段

实例:

select it.Code,wm_concat(it.inv) from ttt20230705 it group by it.Code

image

2.listagg() within group()

使用格式:

select 分组字段,listagg(要转换的列名,',') within group(order by 要转换的列名) from 表名 group by 分组字段

实例:

select it.Code,listagg(it.inv,',') within group(order by it.inv) from ttt20230705 IT group by it.Code

image

3.xmlagg

本质就是listagg加强版,详情见这里

4.pivot(本质还是case when)

使用格式:

select * from 表名 pivot(聚合函数(转换的字段名) for Code in (转换的值1 AS 字段名1,转换的值2 AS 字段名2,转换的值3 AS 字段名3));

实例:

select * from ttt20230705 pivot(listagg(inv,',') for Code in ('AA' AS AA,'BB' AS BB,'CC' AS CC));

image

动态行转列(行固定)

基本思路就是使用存储过程对SQL进行拼接,通过执行SQL对数据查询出来,然后将数据做成表或者视图,然后查询出来

参考这个

动态行转列(行不固定)

这种是什么意思呢,就是我现在遇到的问题

在这五个表中的数据各有关联,可以连表对某个类别的数据属性进行查询,但是问题就在于,同一个大类下的所有小类各有各的属性,可能上一个属性名是备注的位置,下一个类别的对应位置属性名就是走向,且大部分都是不一样的,也就形成了,一个类别对应多个子类别,每个子类别对应多个属性名,每个属性名对应每个属性数据,但是存储属性名和属性数据的表数据内容并不是一样的,这就导致,可能我行转列出来的数据是一团乱麻,没有价值

这种情况,最后的解决方法就只有最暴力的枚举了,对每个查询出来的属性名和数据单独再查询一次,才能保证每个数据都是对的,即

select 
(select it.name from table2 it where it.a = t.a),
(select it.name from table2 it where it.a = t.b),
(select it.name from table2 it where it.a = t.c),
(select iit.data from table3 iit where iit.a = t.a),
(select iit.data from table3 iit where iit.a = t.b),
(select iit.data from table3 iit where iit.a = t.ab),
from table1 t

标签:iit,group,wm,转列,listagg,where,select
From: https://www.cnblogs.com/jokingremarks/p/17527986.html

相关文章

  • cannot find view for viewmodel caliburn micro
    在用Caliburn.Micro使用官方的例子,当天还是可以运行出来界面如下: 但是隔天去公司后一直运行显示找不到shellviewmodel百度显示,Caliburn.Micro对命名规范特别的严格。又重新写了一个新项目,还是出了问题无解,步骤都是一样的。最后的解决办法是重新开了一个新的WPF项目,将项目的......
  • Linux PWM 开发指南
    LinuxPWM开发指南1概述1.1编写目的介绍PWM模块的详细设计方便相关人员进行PWM模块的代码设计开发。1.2使用范围适用于Linux-3.10,linux-4.4和Linux-4.9内核,Linux-5.4内核。1.3相关人员PWM驱动的开发人员/维护人员等2术语及概念2.1术语定义及缩略语术语解释说明Sun......
  • 三相桥式两电平逆变器的SVPWM调制和三相T型三电平逆变器的SVPWM模型
    三相桥式两电平逆变器的SVPWM调制和三相T型三电平逆变器的SVPWM模型和说明文档。对比着看绝对有助于你理解SVPWM调制方法。支持MATLAB2017b以上的版本。原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/669194707051.html......
  • 双馈风力发电系统仿真,DFIG,采用背靠背双pwm变换器,具备最大功率追踪功能
    双馈风力发电系统仿真,DFIG,采用背靠背双pwm变换器,具备最大功率追踪功能。(1)转子侧变换器采用基于定子电压定向的矢量控制策略,有功无功解耦,具备MPPT能力,采用功率外环电流内环双闭环控制结构。(2)网侧采用电网电压定向的矢量控制策略,才用电压外环电流内环控制,直流母线电压稳定,输入功率......
  • PMSG永磁同步发电机并网仿真模型 主要包括发电机、整流器、逆变器(双pwm控制)、电网、控
    PMSG永磁同步发电机并网仿真模型(1)主要包括发电机、整流器、逆变器(双pwm控制)、电网、控制、显示等部分;(2)风机最大功率跟踪mppt采用最佳叶尖速比法;(3)机侧控制(发电控制):采用转速、电流双闭环控制,均采用PI,磁链解耦;调制策略采用SVPWM;(4)网侧控制(并网控制):采用电压、电流双闭环控制,均采......
  • oracle函数 wm_concat 与 listagg
    1.wm_concatselectt.type,to_char(wm_concat(t.id||'---'||t.seq))asid_seq,to_char(wm_concat(t.seq))asseqsfrom(select'A'type,'A001'id,1seqfromdualunionallselect'A'type,'A002......
  • PSExec 与 WMI
    郑重声明:本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。PSExec与WMI1PSExec1.1Windows下PSExec使用PSExec原理:通过管道在......
  • Android - Jetpack ViewModel源码探秘
    ViewModel使用场景当横竖屏切换时,希望数据不丢失,可以用ViewModel当成存储媒介;可作为Activity&Fragment通讯的媒介;ViewModel的创建//Activity中构建MyViewModelViewModelProvider(this).get(MyViewModel::class.java)//ViewModelProviders类中publicViewModelProvider(@NonNu......
  • Android面试题:Handler、Binder、AMS、WMS面试必问题(带答案,万字总结,精心打磨,快收藏)
    前言业内一直有一个说法:技术好的未必底层够硬,但底层扎实的学起来进步如飞。这也是为什么如今的大厂都非常注重对底层原理的考察:除了可以看出面试者的即战力,底层原理更能看出一个开发者的发展潜力。大家对此应该也深有感受,在面试的过程中,底层原理是无论如何都躲不过去的一关。最典型......
  • rt thread pwm使用
    1.rt-threadsettings->组件->设备驱动程序->使用PWM设备驱动程序;2.rt-threadsettings->组件->示例->rtthread设备驱动示例->pwmdevice;3.board.h->#defineBSP_USING_PWM3#defineBSP_USING_PWM3_CH1#defineBSP_USING_PWM3_CH24.stm32f1xx_ha......