oracle pivoting insert 用法简介
本的sql 语句 和例子转自:
http://space.itpub.net/25724608/viewspace-695818
oracle 有一种insert 语句叫 pivoting insert.
直译就是旋转插入了.
下面会用个例子做个简单说明.
首先建表两张表 sales_source_data, sales_info
建表sql:
sales_source_data:
create table sales_source_data (
employee_id number(6),
week_id number(2),
sales_mon number(8,2),
sales_tue number(8,2),
sales_wed number(8,2),
sales_thur number(8,2),
sales_fri number(8,2)
);
sales_info:
create table sales_info (
employee_id number(6),
week number(2),
sales number(8,2)
);
接着对表 sales_source_data 插入一行数据.
insert into sales_source_data values (176,6,2000,3000,4000,5000,6000);
好了, 现在的需求是把表 sales_source_data 的数据
EMPLOYEE_ID WEEK_ID SALES_MON SALES_TUE SALES_WED SALES_THUR SALES_FRI
----------- ---------- ---------- ---------- ---------- ---------- ----------
176 6 2000 3000 4000 5000 6000
导入到 另一张表 sales_info中.
很明显, 由于sales_source_data 是具有7个字段的. 而sales_info只有3个字段.
普通同的insert 方法不能胜任.
而有一种Insert 语句能将 原本横向的数据
EMPLOYEE_ID WEEK_ID SALES_MON SALES_TUE SALES_WED SALES_THUR SALES_FRI
变成竖向的
EMPLOYEE_ID
WEEK_ID
SALES_MON
EMPLOYEE_ID
WEEK_ID
SALES_TUE
EMPLOYEE_ID
WEEK_ID
SALES_WED
EMPLOYEE_ID
WEEK_ID
SALES_THUR
EMPLOYEE_ID
WEEK_ID
SALES_FRI
5条数据 插入到sale_info 表.
看起来就想把打横的数据旋转了45度 变成打竖的数据(列转行)
所以这种insert 语句叫做 旋转insert (pivoting insert)
sql语句如下:
insert all
into sales_info values(employee_id, week_id, sales_mon)
into sales_info values(employee_id, week_id, sales_tue)
into sales_info values(employee_id, week_id, sales_wed)
into sales_info values(employee_id, week_id, sales_thur)
into sales_info values(employee_id, week_id, sales_fri)
select employee_id, week_id, sales_mon, sales_tue, sales_wed, sales_thur,sales_fri
from sales_source_data;
见到 Insert all 这个关键字了吧, 没错, 可见pivoting insert 也是 mutitable insert 的一种.
关于 mutitable insert 有如下重点:
INSERT [ALL | FIRST]
例子:
Insert All
when id>5 then into z_test1(id, name) values(id,name)
when id<>2 then into z_test2(id) values(id)
else into z_test3 values(name)
select id,name from z_test;
关键就是Insert 后面 All 和 insert 的区别
当使用FIRST关键字时,oracle会从上至下判断每一个条件,当遇到第一个满足时就执行后面的into语句,
oracle pivoting insert 用法简介相关推荐
- Oracle rollup 关键字用法简介.
1. 什么是Rollup 在PL/sql 中, Rollup 这个关键字通常用于select 语句的 group by 后面. 在group by 后面使用rollup关键字, select语句就 ...
- oracle插入数据语句实例,oracle Insert 用法总结
总结下Oracle 中的Insert用法 1.标准Insert --单表单行插入 语法: INSERT INTO table [(column1,column2,...)] VALUE (value1 ...
- Oracle系列之add_months简介以及用法归纳教程
Oracle系列之add_months简介以及用法归纳教程 最近遇到一个SQL统计,需要遇到获取某个日期n个月后的日期,比如统计入职时间超过2年的员工信息 如果不依靠Oracle函数,自己去写有点麻烦 ...
- Oracle SQL调优系列之no_unnest和unnest用法简介
Oracle调优之no_unnest和unnest用法简介 本博客介绍Oracle SQL调优的一种常用也是很实用的方法,也即/*+no_unnest */和/*+ unnest*/,介绍Oracle ...
- oracle中的select into,Oracle中insert into select和select into的用法
Oracle中insert into select和select into的用法 两张表进行数据的拷贝,最常用的拷贝语句是: insert into select 和select into from ...
- oracle insert into insert,总结下Oracle 中的Insert用法
1.标准Insert --单表单行插入 语法: INSERT INTO table [(column1,column2,...)] VALUE (value1,value2,...) 例子: inse ...
- oracle数据库insert into,oracle中insert into用法 oracle中insert如何带条件添加数据?
oracle insert into 脚本怎么写 INSE INTO BOOK(bookid,name,price) VALUES('100123','oracle ',54); 或者 INSE IN ...
- oracle中rollback用法,Oracle中SAVEPOINT和ROLLBACK用法
savepoint是事务内部允许部分rollback的标志符.因为事务中对记录做了修改,我们可以在事务中创建savepoint来标识不同的点.如果遇到错误,就可以rollback到不同的点或直接回来事 ...
- oracle中call用法,Oracle数据库中 call 和 exec的区别
Oracle数据库中 call 和 exec的区别 今天发现了一个小东西,觉得很有意思,查找了一些资料,跟大家分享一下: 在sqlplus中: 在第三方提供的工具(如:plsqldev) 总结: ex ...
最新文章
- 我的天,你工作5年了,连Java agent都不知道...
- 青少年python编程课_青少年之Python编程课程安排第一季
- 死锁的四个必要条件,及处理方法
- 国际会议“First Helicon Plasma Physics and Applications Worckshop”口头报告PPT
- VIM-多文件-多窗口
- 微信小程序android错误,app安卓端 跳转到微信小程序失败
- 解决:无法获取实体类com.xxx.xx.xx.xx.dto.XxxDTO对应的表名
- ubuntu常用软件
- 新代系统反向间隙参数_新代系统SYNTEC:调试参数
- c/c++文本单词查询
- 共享硬盘没有权限访问计算机,win7系统访问磁盘共享没有权限的解决方法
- 蚂蚁金服 Service Mesh 技术风险思考和实践
- 不要质疑读者,读者永远比作者聪明
- 【看论文】之《基于YIQ彩色模型的成熟番茄图像分割识别_王新忠》
- 【python】详解multiprocessing多进程-Pool进程池模块(二)
- 使用 kickstart 半自动化安装CentOS系统 利用PXE实现自动化安装centos系统
- Vue3.0----综合案例(第七章)
- python14 Prompting and Passing
- STM32开发实战:W25Q32JV SPI Flash详解
- MSP430 F5529 硬件SPI OLED 单片机 0.96英寸7针OLED SPI 6针OLED