可以查看博客园上传的文件 pivot  除了要转成列的字段(classnum,classid)值不一样,其他值都应该相同,否则转的数据有问题…
今天接到业务部门的一个需求,需要对同一公司的不同财务指标进行排序,需要用到oracle的行转列函数unpivot. 财务报表的表结构为: 要实现业务部门的排序筛选功能,需要首先将行数据转为列数据: 使用unpivot函数,实现如下 with t4 as (select t3.COMPCODE, t3.ENDDATE, t3.CURFDS as "货币资金", t3.TRADFINASSET as "交易性金融资产", t3.NOTESRECE as "应收…
1.通过 10g 所提供的 WMSYS.WM_CONCAT 函数即可以完成 行转列的效果 select group_code, wm_concat(display_title) from DR_OPM_DATASET_RELATED group by group_code 网上看到例子: CREATE TABLE tab_name(ID INTEGER NOT NULL PRIMARY KEY,cName VARCHAR2(20));CREATE TABLE tab_name2(ID INTEG…
最近又碰到行专列问题了,当时不假思索用的是子查询,做完后我询问面试管行专列标正的写法应该如何写,他告诉我说应该用"Decode",索性我就总结一下,一共三种方式 --=========建表语句 CREATE TABLE populations( country VARCHAR2(20), sex INT, populcation INT ); --=========插入记录 insert into populations (COUNTRY, SEX, POPULCATION) valu…
pivot函数:行转列函数: 语法:pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值)):unpivot函数:列转行函数: 语法:unpivot(新增值所在列的列名 for 新增列转为行后所在列的列名 in (需转为行的列名)):执行原理:将pivot函数或unpivot函数接在查询结果集的后面.相当于对结果集进行处理. 转换示例: 1.原始表数据: sql语句:select * from T_PIVOT_TEST_1 ; 2.用pivot函数进行行转列.其中用聚合函…
这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str from app_user 字符串转多列 实际上就是拆分字符串的问题,可以使用 substr.instr.regexp_substr函数方式 字符串转多行 使用union all函数等方式 wm_concat函数 首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以","号分隔起…
oracle 行转列 首先看一下源数据: 方法一:WM_CONCAT group by 这个方法没有问题. SELECT CODE_TS, WMSYS.WM_CONCAT(S_NUM + || ':' || ELEMENT) ELEMENT FROM T_MERCH_ELEMENT ' group by CODE_TS; 得到的结果: 上面大家可能会发现序号没有按顺序排列下来.如果没有要求,就这样就可以了.如果要排序看方法二. 方法二:WM_CONCAT OVER  有特殊数据时会报错.报:“操…
行转列之前的数据: select * from tbname; 行转列之后的数据: select pud, listagg(ud, ',') within group(order by null) as ud from tbname group by pud; 其中, listagg(ud, ',') within group(order by null) 为行转列函数,ud为需要转化的列 as ud as ud 为给转后的列匿名一个新列名. 完成.…
1.新建测试表 create table TEST_TABLE( T1 VARCHAR2(10),--姓名 T2 VARCHAR2(10),--科目 T3 VARCHAR2(10)--成绩 ) 2.插入测试数据 insert into test_table (T1, T2, T3) values ('张三', '语文', '88'); insert into test_table (T1, T2, T3) values ('张三', '数学', '99'); insert into test_t…