oracle转行交流群,oracle多列转行
遇到的问题描述如下:
现有如下数据格式(待转换表):
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多列转行相关推荐
- oracle 列转行 带逗号_oracle wm_concat 列转行 逗号分隔
oracle wm_concat函数,用于列转行,逗号分隔本文将详细介绍此功能的应用 [sql] 代码如下: create table wlbtest1( username varchar2(2), ...
- oracle --高级函数应用-pivot (列转行)
系列文章目录 oracle --高级函数应用-pivot使用 文章目录 系列文章目录 一.pivot 作用? 二.使用步骤 1.创建表 2.插入数据 3.查询结果 总结 提示:以下是本篇文章正文内容, ...
- oracle列转行 多个字段_oracle 列转行、行转列
行转列:PIVOT 列转行:UNPIVOT 这两个是在oracle11g上面新增的函数.下面举例说明用法. PIVOT: 学生成绩表,原数据: select class_name, student_n ...
- was连接oracle rac集群,oracle 11g rac 集群操作命令
1).检查集群状态: [grid@rac02 ~]$ crsctl check cluster CRS-4537: Cluster Ready Services is online CRS-4529: ...
- mysql 列转行union all_MySQL中的列转行 - osc_qheq8wav的个人空间 - OSCHINA - 中文开源技术交流社区...
mysql中的列转行 在工作中遇到的一个MySQL列转行的统计: 场景 用户访问app时会跳出标签选择页面让用户选择喜欢的标签,在数据库中记录的是数组样式的字符串,数据样式大致如下: id user_ ...
- oracle 动态sql列转行_SQL Server中动态列转行
http://www.cnblogs.com/gaizai/p/3753296.html 一.本文所涉及的内容(Contents) 三.实现代码(SQL Codes) (一) 首先我们先创建一个测试表 ...
- was连接oracle rac集群,Oracle集群(RAC)及 jdbc 联接双机数据库
oracle集群url配置 oracle集群中plsql和java程序连接方式非集群中plsql连接配置: www.2cto.com DB1_193 = (DESCRIPTION = (ADDRESS ...
- was连接oracle rac集群,Oracle 学习之RAC(九) 集群负载均衡及故障转移
查看监听,使用grid用户 11grac1:11grac1-> lsnrctl status LSNRCTL for Linux: Version 11.2.0.3.0 - Production ...
- oracle重启集群,Oracle 集群(RAC)的启动与关闭
Oracle RAC启动与关闭的时候需要注意以下几点: 一.检查共享设备 二.自动启动RAC并检查相关进程 三. 手动启动RAC 四. 在启动的过程中最好检测着crs.ASM和数据库的日志. 一.检查 ...
最新文章
- Java 静态变量,静态方法,静态常量(java static 关键字)
- .NET中可空值类型实现原理
- hdu 2098 分拆素数和(一个偶数拆分成两个不同素数和 拆法数量)
- postgresql测试题_PostgreSQL练习
- Linux source用法(转)
- 玩游戏学微积分!探索理工锻炼的游戏化应用, 腾讯发布新游戏《微积历险记》...
- 【Machine Learning】TensorFlow实现K近邻算法预测房屋价格
- Android学习笔记(十一)——将Fragment添加到Activity中以及参数传递
- 计算机组成原理与体系结构
- 转行学IT,能找到好工作吗?
- R语言lowess函数数据平滑实战(Locally Weighted Regression, Loess)
- Mybatis数据库表字段有关键字
- 互联网产品设计进阶(14)多一点设计,少一点代码
- iOS-AppStore审核指南(2017最新版)
- 保险Insurance
- 分享一款手机端的PDF文件编辑软件「PDF处理助手」简单、免费
- 【元宇宙欧米说】一个科幻 NFT,一场关于创作者经济的探索
- 基于arm9的mbus集中器采集器持续改进
- 基于Springboot的电商系统开题报告
- pytorch版本对应