遇到的问题描述如下:

现有如下数据格式(待转换表):

month_no kpi_code  011  013  023  018  032

201207   ABCD0001   12   12   12   12   12

201207   ABCD0002   12   12   12   12   12

201207   ABCD0003   12   12   12   12   12

201207   ABCD0004   12   12   12   12   12

201207   ABCD0005   12   12   12   12   12

(列011,013,023,018等实际作为转换后的prov_id并且实际应用中,prov_id不止示例中的五个)

转换为:

month_no  prov_id  kpi_code  kpi_value

201207      011     ABCD0001     12

201207      013     ABCD0001     12

201207      023     ABCD0001     12

201207      018     ABCD0001     12

处理过程:

首先,建三张临时表:

-- Create table 待转换表

create table M_TEST

(

MONTH_NO VARCHAR2(10),

PROV_ID  VARCHAR2(6),

YDCB0001 NUMBER,

YDCB0002 NUMBER,

YDCB0003 NUMBER,

YDCB0004 NUMBER,

YDCB0005 NUMBER,

YDCB0006 NUMBER

)

tablespace USERS

pctfree 10

initrans 1

maxtrans 255

storage

(

initial 64K

next 1M

minextents 1

maxextents unlimited

);

-- Create table 转换后表

create table M_TEST_T

(

MONTH_ID  VARCHAR2(10),

PROV_ID   VARCHAR2(6),

KPI_CODE  VARCHAR2(10),

KPI_VALUE NUMBER

)

tablespace USERS

pctfree 10

initrans 1

maxtrans 255

storage

(

initial 64K

next 1M

minextents 1

maxextents unlimited

);

-- Create table 日志表

create table M_LOG

(

PROC_NAME VARCHAR2(30),

PROV_ID   VARCHAR2(10),

TEST_DATE DATE

)

tablespace USERS

pctfree 10

initrans 1

maxtrans 255

storage

(

initial 64K

next 1M

minextents 1

maxextents unlimited

);

---转换前至转换后的处理过程

----创建存储过程

create or replace procedure p_m_test_t(month_id varchar2,

prov_no  varchar2,

retinfo  out varchar2) is

proc_name varchar2(30);

V_SQL     LONG;

BEGIN

proc_name := 'P_M_TEST_T';

V_SQL     := 'INSERT INTO m_test_t'; --结果表

FOR T IN (select column_name

from user_tab_columns

where table_name = 'M_TEST'

and column_id > 2) LOOP

V_SQL := V_SQL || ' SELECT MONTH_NO,PROV_ID,''' || T.COLUMN_NAME ||

''',' || T.COLUMN_NAME || ' FROM m_test where month_no=' ||

month_id ||' and (prov_id = '''||prov_no||''' or ''ALL''='''||prov_no||''') UNION ALL ';

END LOOP;

V_SQL := RTRIM(V_SQL, ' UNION ALL ');

DBMS_OUTPUT.put_line(V_SQL);

EXECUTE IMMEDIATE V_SQL;

COMMIT;

--插入日志表信息

insert into m_log

(proc_name, prov_id, test_date)

values

(proc_name, prov_no, sysdate);

commit;

retinfo := ' 结束 ';

EXCEPTION

WHEN OTHERS THEN

retinfo := ' 失败 ';

END;

oracle转行交流群,oracle多列转行相关推荐

  1. oracle 列转行 带逗号_oracle wm_concat 列转行 逗号分隔

    oracle wm_concat函数,用于列转行,逗号分隔本文将详细介绍此功能的应用 [sql] 代码如下: create table wlbtest1( username varchar2(2), ...

  2. oracle --高级函数应用-pivot (列转行)

    系列文章目录 oracle --高级函数应用-pivot使用 文章目录 系列文章目录 一.pivot 作用? 二.使用步骤 1.创建表 2.插入数据 3.查询结果 总结 提示:以下是本篇文章正文内容, ...

  3. oracle列转行 多个字段_oracle 列转行、行转列

    行转列:PIVOT 列转行:UNPIVOT 这两个是在oracle11g上面新增的函数.下面举例说明用法. PIVOT: 学生成绩表,原数据: select class_name, student_n ...

  4. was连接oracle rac集群,oracle 11g rac 集群操作命令

    1).检查集群状态: [grid@rac02 ~]$ crsctl check cluster CRS-4537: Cluster Ready Services is online CRS-4529: ...

  5. mysql 列转行union all_MySQL中的列转行 - osc_qheq8wav的个人空间 - OSCHINA - 中文开源技术交流社区...

    mysql中的列转行 在工作中遇到的一个MySQL列转行的统计: 场景 用户访问app时会跳出标签选择页面让用户选择喜欢的标签,在数据库中记录的是数组样式的字符串,数据样式大致如下: id user_ ...

  6. oracle 动态sql列转行_SQL Server中动态列转行

    http://www.cnblogs.com/gaizai/p/3753296.html 一.本文所涉及的内容(Contents) 三.实现代码(SQL Codes) (一) 首先我们先创建一个测试表 ...

  7. was连接oracle rac集群,Oracle集群(RAC)及 jdbc 联接双机数据库

    oracle集群url配置 oracle集群中plsql和java程序连接方式非集群中plsql连接配置: www.2cto.com DB1_193 = (DESCRIPTION = (ADDRESS ...

  8. was连接oracle rac集群,Oracle 学习之RAC(九) 集群负载均衡及故障转移

    查看监听,使用grid用户 11grac1:11grac1-> lsnrctl status LSNRCTL for Linux: Version 11.2.0.3.0 - Production ...

  9. oracle重启集群,Oracle 集群(RAC)的启动与关闭

    Oracle RAC启动与关闭的时候需要注意以下几点: 一.检查共享设备 二.自动启动RAC并检查相关进程 三. 手动启动RAC 四. 在启动的过程中最好检测着crs.ASM和数据库的日志. 一.检查 ...

最新文章

  1. Java 静态变量,静态方法,静态常量(java static 关键字)
  2. .NET中可空值类型实现原理
  3. hdu 2098 分拆素数和(一个偶数拆分成两个不同素数和 拆法数量)
  4. postgresql测试题_PostgreSQL练习
  5. Linux source用法(转)
  6. 玩游戏学微积分!探索理工锻炼的游戏化应用, 腾讯发布新游戏《微积历险记》...
  7. 【Machine Learning】TensorFlow实现K近邻算法预测房屋价格
  8. Android学习笔记(十一)——将Fragment添加到Activity中以及参数传递
  9. 计算机组成原理与体系结构
  10. 转行学IT,能找到好工作吗?
  11. R语言lowess函数数据平滑实战(Locally Weighted Regression, Loess)
  12. Mybatis数据库表字段有关键字
  13. 互联网产品设计进阶(14)多一点设计,少一点代码
  14. iOS-AppStore审核指南(2017最新版)
  15. 保险Insurance
  16. 分享一款手机端的PDF文件编辑软件「PDF处理助手」简单、免费
  17. 【元宇宙欧米说】一个科幻 NFT,一场关于创作者经济的探索
  18. 基于arm9的mbus集中器采集器持续改进
  19. 基于Springboot的电商系统开题报告
  20. pytorch版本对应

热门文章

  1. 北漂五年,分享一下关于我的职场故事
  2. 微信手机网页上传图片高效率压缩(Canvas+Base64)
  3. C51单片机温湿度传感器DTH11使用
  4. 可删除的BloomFilter
  5. SOAP Web服务
  6. 网吧组网 光纤接入与ADSL接入的较量
  7. NS2仿真中nam节点颜色设置
  8. 部署NFS服务,以及安全的NFS服务
  9. 面经九2023.2.3上午笔试和群面
  10. SIFT特征点提取及描述论文算法详解