一、行转列1.1、初始测试数据表结构:TEST_TB_GRADESql代码:1 create table TEST_TB_GRADE2 (3 ID NUMBER(10) not null,4 USER_NAME VARCHAR2(20 CHAR),5 COURSE VARCHAR2(20 CHAR),6 SCORE FLOAT7 )初始数据如下图: 1.2、 如果需要实现如下的查询效果图:这就是最常见的行转列,主要原理是利用decode函数、聚集函数(sum),结合group by分组实现的,具体的sql如下:Sql代码:1 sel...
cs.standard_id,cs.area_code,cs.exu_dept, regexp_substr(exu_dept, ‘[^,]+‘, 1, level) as dept_id from ca_stand_exu_dept csconnect by id = prior id and instr(exu_dept||‘,‘, ‘,‘, 1, level) > 0 and prior dbms_random.value is not null; Oracle数据 行转列标签:regex pre standard level str sel val 记录 bst 本文系统来源:http://www.cnblogs.com/wt-vip/p/6004605.html
OPER_TIME,MICROPAY,REFUNDfrom(select trunc(oper_time) oper_time, class_name,sum(total_fee) total_feefrom wx_pay_detailgroup by trunc(oper_time),class_name)pivot(sum(total_fee) for class_name in (‘MicroPay‘as "MICROPAY",‘Refund‘ as "REFUND"))order by oper_time↑SQL,转换后列名 在FOR...IN 中AS 想要的 “名称”Oracle根据【日期】组,其他条件根据PIVOT行转列。使每个日期条件关联的其他数据只有一行。标签...
create or replace package pro_test asTYPE out_cursor IS REF CURSOR; procedure Alarm_ContentsByTime(p_StartTime varchar2, ----开始时间p_EndTime varchar2, ----结束时间io_cursor in OUT out_cursor);end pro_test;包体create or replace package body pro_test isprocedure Alarm_ContentsByTime(p_StartTime varchar2, ----开始时间p_EndTime varchar2, ----结束时间io_cursor in OUT out_cursor) ...
create table demo(id int,name varchar(20),nums int); ---- 创建表insert into demo values(1, ‘苹果‘, 1000);insert into demo values(2, ‘苹果‘, 2000);insert into demo values(3, ‘苹果‘, 4000);insert into demo values(4, ‘橘子‘, 5000);insert into demo values(5, ‘橘子‘, 3000);insert into demo values(6, ‘葡萄‘, 3500);insert into demo values(7, ‘芒果‘, 4200);insert into demo values(8, ‘芒果‘...
P_FXJG ASv_LM VARCHAR2(2000);vs_sql varchar2(6000); vs_sql1 varchar2(6000); BEGINvs_sql1 := ‘INSERT INTO LS_TEMP select dbms_lob.substr(wm_concat(distinct(sf))) from B_CLB a ‘;execute immediate vs_sql1;SELECT SFBM INTO V_LM FROM LS_TEMP; vs_sql := ‘create or replace view V_FXJG as select * from (select a.YH, a.MC, a.LX "BZ", a.SF, a.JG from B_CLB a ) pivot(sum(JG) ...
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_table (T1, T2, T3) values (‘张三‘, ‘英语‘, ‘100‘);insert into test_table (T1, T2, T3) values (‘李四‘, ‘语文‘, ‘79‘);insert in...
1.使用条件查询 查询部门为20的员工列表 -- 查询部门为20的员工列表 SELECT t.DEPTNO,t.ENAME FROM SCOTT.EMP t where t.DEPTNO = ‘20‘ ; 效果:2.使用 listagg() WITHIN GROUP () 将多行合并成一行(比较常用) SELECT T .DEPTNO, listagg (T .ENAME, ‘,‘) WITHIN GROUP (ORDER BY T .ENAME) names FROM SCOTT.EMP T WHERE T .DEPTNO = ‘20‘ GROUP BY T .DEPTNO ...
--列转行 --示例1select * from (select o.sname, count(1) dataNum from t_Olm_Onlinemondata d join t_Aaa_ou o on o.ou_id = d.company_id where d.mon_time > to_date(‘2019-11-01 00:00:00‘, ‘yyyy-mm-dd hh24:mi:ss‘) group by o.sname ) pivot( sum(dataNum) for sname in(‘石家庄炼化‘,‘燕山石化‘,‘安庆石化‘,‘天津石化‘,‘河南油田‘,‘湖北化肥‘,‘扬子石化‘,‘金陵石化‘,‘茂名石化‘ ))--示例2create...
第一种 函数 wm_content(‘待转列名称‘) 11g 往后,不推荐使用 实例 多表关联时可以使用 (SELECT wm_concat(nvl(B1.OPERA_CODE,‘a‘)) AS OPERA_CODE FROM OPERATION_NAME B1 WHERE T1.OPERA_REQ_NO=B1.OPERA_REQ_NO) AS SURGERY_OPER_CODE第二种 实例 WITH TEMP AS(SELECT ‘CHINA‘ NATION, ‘GUANGZHOU‘ CITYFROM DUALUNION ALLSELECT ‘CHINA‘ NATION, ‘SHANGHAI‘ CITYFROM DUALUNION ALLSELECT ‘CHINA‘ NATION, ‘BEI...
1. 多列转成一列(列转行) -- 6列转成两列(列转行) 这就是最常见的列转行,主要原理是利用SQL里面的union with temp as (select a.iid_sn, a.product_name, a.sales_figures, a.selling_cost, a.pretax_profit, a.closing_inventory from is_import_detail a,1.多列转成一列(列转行)--6列转成两列(列转行) 这就是最常见的列转行,主要原理是利用SQL里面的union with temp as(selecta.iid_sn,a.product_name,a.sales_figures,a.selli...
文章说明:根据成绩表,对每个学生的成绩数据进项行转列操作,最后每行显示每个学生的各科成绩。 以下是行转列的各个步骤操作。 1、创建学生信息,课程,成绩三张表 CREATE TABLE TB_STUDENT( STUDENTID VARCHAR2(10) PRIMARY KEY, STUNAME VARCHAR2(50), SE文章说明:根据成绩表,对每个学生的成绩数据进项行转列操作,最后每行显示每个学生的各科成绩。 以下是行转列的各个步骤操作。1、创建学生信息,课程,成绩三张表CREATE TA...
decode其实就是if-else,如:decode(ybc,null,0,ybc),,这个意味着如果ybc列==null,则函数返回0,否则返回ybc的。 再如,decode(变量,条件1,1,条件2,2),这个就意味着是:if-elsif,如果是decode(变量,条件1,1,条件2,2,3),这个则是if-elsif-elsedecode其实就是if-else,如:decode(ybc,null,0,ybc),,这个意味着如果ybc列==null,则函数返回0,否则返回ybc的值。 再如,decode(变量,条件1,值1,条件2,值2),这个就意...
在开发的过程中,有时候需要将行数据转换为列数据,这种情况可用Decode函数和分组来实现 --构造数据集with A as (select 阿诗玛 Name, 语文 Class, 86 Score from dual union all select 阿诗玛, 数学, 95 from dual union all select 阿诗玛,在开发的过程中,有时候需要将行数据转换为列数据,这种情况可用Decode函数和分组来实现 --构造数据集 with A as(select 阿诗玛 Name, 语文 Class, 86 Scorefrom dualunion allselect 阿诗...
表结构和数据如下(表名Test): NO VALUE NAME 1 a 测试1 1 b 测试2 1 c 测试3 1 d 测试4 2 e 测试5 4 f 测试6 4 g 测试7 Sql语句: select No, ltrim(max(sys_connect_by_path(Value, ;)), ;) as Value, ltrim(max(sys_connect_by_path(Name, ;)), 表结构和数据如下(表名Test): NO VALUE NAME 1 a 测试1 1 b 测试2 1 c 测试3 1 d 测试4 2 e 测试5 4 f ...