oracle插入多表(insert all/first)
1、建测试表
- CREATE TABLE EDW_INT
- (
- AGMT_NO VARCHAR2(40 BYTE) NOT NULL,
- AGMT_SUB_NO VARCHAR2(4 BYTE) NOT NULL,
- NEED_REPAY_INT NUMBER(22,2),
- CURR_PERIOD NUMBER(4) NOT NULL
- );
- CREATE TABLE EDW_INT_1
- (
- AGMT_NO VARCHAR2(40 BYTE) NOT NULL,
- AGMT_SUB_NO VARCHAR2(4 BYTE) NOT NULL,
- NEED_REPAY_INT NUMBER(22,2),
- CURR_PERIOD NUMBER(4) NOT NULL
- );
- CREATE TABLE EDW_INT_2
- (
- AGMT_NO VARCHAR2(40 BYTE) NOT NULL,
- AGMT_SUB_NO VARCHAR2(4 BYTE) NOT NULL,
- NEED_REPAY_INT NUMBER(22,2),
- CURR_PERIOD NUMBER(4) NOT NULL
- );
2、插入测试数据
- INSERT INTO EDW_INT
- (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
- VALUES
- ('20003874', '2104', 3126.5, 7);
- INSERT INTO EDW_INT
- (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
- VALUES
- ('20003874', '2104', 3290.76, 6);
- INSERT INTO EDW_INT
- (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
- VALUES
- ('20003874', '2104', 3454.06, 5);
- INSERT INTO EDW_INT
- (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
- VALUES
- ('20003874', '2104', 3616.41, 4);
- INSERT INTO EDW_INT
- (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
- VALUES
- ('20017143', '2104', 2350.86, 0);
- INSERT INTO EDW_INT
- (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
- VALUES
- ('20017143', '2104', 3566.55, 0);
- INSERT INTO EDW_INT
- (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
- VALUES
- ('20018273', '2104', 1639.46, 0);
- INSERT INTO EDW_INT
- (AGMT_NO, AGMT_SUB_NO, NEED_REPAY_INT, CURR_PERIOD)
- VALUES
- ('20018273', '2104', 2080.49, 0);
- COMMIT;
3、insert all/first语句示例
(1)、insert all-不带条件
- insert all
- into edw_int_1(agmt_no,agmt_sub_no,need_repay_int,curr_period)
- values(agmt_no,agmt_sub_no,need_repay_int,curr_period)
- into edw_int_2(agmt_no,agmt_sub_no,curr_period)
- values(agmt_no,'1234',curr_period)
- select agmt_no,agmt_sub_no,need_repay_int,curr_period from edw_int;
- commit;
(2)、insert all-带条件
- insert all
- when curr_period=0 then
- into edw_int_1(agmt_no,agmt_sub_no,need_repay_int,curr_period)
- values(agmt_no,agmt_sub_no,need_repay_int,curr_period)
- else
- into edw_int_2(agmt_no,agmt_sub_no,need_repay_int,curr_period)
- values(agmt_no,agmt_sub_no,need_repay_int,curr_period)
- select agmt_no,agmt_sub_no,need_repay_int,curr_period from edw_int;
- commit;
(3)、insert first-带条件
- insert first
- when curr_period=0 then
- into edw_int_1(agmt_no,agmt_sub_no,need_repay_int,curr_period)
- values(agmt_no,agmt_sub_no,need_repay_int,curr_period)
- when agmt_sub_no='2104' then
- into edw_int_2(agmt_no,agmt_sub_no,need_repay_int,curr_period)
- values(agmt_no,agmt_sub_no,need_repay_int,curr_period)
- select agmt_no,agmt_sub_no,need_repay_int,curr_period from edw_int;
- commit;
4、数据结果查看
- truncate table edw_int_1;
- truncate table edw_int_2;
- select * from edw_int;
- select * from edw_int_1;
- select * from edw_int_2;
5、all与first的区别
all:不考虑先后关系,只要满足条件,就全部插入;
first:考虑先后关系,如果有数据满足第一个when条件又满足第二个when条件,则执行第一个then插入语句,第二个then就不插入第一个then已经插入过的数据了。
其区别也可描述为,all只要满足条件,可能会作重复插入;first首先要满足条件,然后筛选,不做重复插入。
6、利用insert all实现行列转换(insert all的旋转功能)
- 1、建一行多列表及测试数据插入
- create table week_bal(id int,w1_bal number,w2_bal number,w3_bal number,w4_bal number,w5_bal number);
- insert into week_bal values(1,10.09,12.98,23.89,89.08,1098.01);
- commit;
- select * from week_bal;
- 2、建少列多行表
- create table week_bal_new(id int,week int,bal number);
- 3、利用insert all语句插入
- insert all
- into week_bal_new(id,week,bal)values(id,1,w1_bal)
- into week_bal_new(id,week,bal)values(id,2,w2_bal)
- into week_bal_new(id,week,bal)values(id,3,w3_bal)
- into week_bal_new(id,week,bal)values(id,4,w4_bal)
- into week_bal_new(id,week,bal)values(id,5,w5_bal)
- select id,w1_bal,w2_bal,w3_bal,w4_bal,w5_bal from week_bal;
- select * from week_bal_new;
oracle插入多表(insert all/first)的更多相关文章
- oracle 把查询结果插入到表中几种方式
转载:Oracle中把一个查询结果插入到一张表中 以下是信息留存: 一.Oracle数据库中,把一张表的查询结果直接生成并导入一张新表中. 例如:现有只有A表,查询A表,并且把结果导入B表中.使用如下 ...
- oracle 插入表数据的4种方式
1.往表中插入一整行数据 /*方法一*/ INSERT INTO 表名 VALUES(val1,val2,val3,...); /*方法二*/ '; 如: ,, FROM DUAL; 注意: 2. ...
- Oracle插入(insert into)
Oracle插入(insert into) 转载:http://www.oraclejsq.com/article/010100199.html Oracle对表数据的插入是使用insert命令来执行 ...
- 问题:oracle select into;结果:oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解
oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解 (2011-07-08 08:59:47) 转载▼ 标签: it 分类: oracle 我们经常会遇 ...
- oracle数据库【表复制】insert into select from跟create table as select * from 两种表复制语句区别
create table as select * from和insert into select from两种表复制语句区别 create table targer_table as select ...
- 定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表
最近项目中有一种需求: 大致需求是这样的 通过给定的 用户名和密码 要定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表 项目的结构式struts1 hibernat ...
- oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解
我们经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INT ...
- 向oracle中的表插入数据的方法
向oracle中的表插入数据的方法有以下几种: 假设表名为User 第一种方法:select t.*,rowid from User t;-->点击钥匙那个标记就可向表中添加数据 第二种方法:s ...
- Oracle查询一个表的数据插入到另一个表
1. 新增一个表,通过另一个表的结构和数据 create table XTHAME.tab1 as select * from DSKNOW.COMBDVERSION 2. 如果表存在: insert ...
随机推荐
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 21. Model 验证 Again
深入的将Model验证 手动添加验证的错误 view里面显示每个属性的验证错误信息 显示整个model级别错误 自定义验证 如果业务逻辑需要比较复杂的验证.而且这个验证逻辑可能到处复用的话就应该考虑使 ...
- E20180402-hm
cascade n. 串联; 倾泻; 小瀑布,瀑布状物; restrict vt. 限制,限定; 约束,束缚; strict adj. 精确的; 绝对的; 严格的,严谨的; [植] 笔直的; re ...
- 更新gitignore
更新: 2017/04/26 修正windows版本下的命令 git rm -r --cached . (Windows 下的版本) 更新: 2017/06/06 mac下的命令也 ...
- 2016 Multi-University Training Contest 3 1011【鸽巢原理】
题解: 坐标(0,m)的话,闭区间,可能一共有多少曼哈顿距离? 2m 但是给一个n,可能存在n(n+1)/2个曼哈顿距离 所以可以用抽屉原理了 当n比抽屉的数量大,直接输出yes 不用计算 那...N ...
- CodeForces 615C
题意: 给定两个字符串s1,s2利用s1去构造s2,s1有无限个,可以翻转,你最少要用几个s1才能构造s2.输出每一次使用的s1的有效区间. 伪思路: 据说是暴力就能过的题目.然而自己就是暴力差,模拟 ...
- PTA 模拟,【放着一定要写哈哈哈哈哈】(据说用string哟)
实现一种简单原始的文件相似度计算,即以两文件的公共词汇占总词汇的比例来定义相似度.为简化问题,这里不考虑中文(因为分词太难了),只考虑长度不小于3.且不超过10的英文单词,长度超过10的只考虑前10个 ...
- Ubuntu还是windows呢
本来想把才换不久的电脑也换成Ubuntu,犹豫再三,还是把这个老电脑作为Ubuntu的主力机把,毕竟大屏幕看着也得劲 新电脑还是win10吧,毕竟现在速度还是刷刷的,等过几年速度降下来了,就换成Ubu ...
- CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
关于安装请见 CDH版本大数据集群下搭建Hue(hadoop-2.6.0-cdh5.5.4.gz + hue-3.9.0-cdh5.5.4.tar.gz)(博主推荐) Hue的启动 也就是说,你Hue ...
- Jquery | 基础 | 使用 jQuery 表单过滤选择器
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 用JS改变页面中b标签的样式啊 样式的等
用JS改变页面中b标签的样式啊 样式的等 ,实际上是在标签内加上样式 ,用媒体查询的话 ,不能生效 <!DOCTYPE html> <html lang="en&qu ...