看了这篇文章,我理解了平时用过“旋转插入”方法,只是理论上不知道;在这转载一篇文章,理论结合实际看看pivoting insert 的用法及用处;
文章来自:http://blog.sina.com.cn/s/blog_854ec93b0101adeh.html
pivoting insert(旋转插入)
这节主要讨论使用pivoting insert 实现将非关系性表记录转换为关系型表中存储。Pivot 旋转是OLAP 中的一个基本改变,提供多维度数据分析。比如一个表为sales_source_data,里面的列为
employee_id number,week_id number,sales_mon number,sales_tue number,sales_wed number,sales_thur number,sales_fri number 员工id,周id,其他的是工作日的每天的销售记录。
现在要把数据转到sales_info表中,这个表的列为employee_id,week_id,sales。
要实现这个转换可以使用pivoting insert 操作。和insert all类似,只不过这里的多表都是同一个表。
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;
比如原来的sales_source_data 中只有一条记录,那么插入到sales_info 中就变成了5 条记录。
select * from sales_source_data;
select * from sales_info;