Oracle 存储过程 跪求大神帮帮忙

[复制链接]
查看11 | 回复5 | 2021-1-27 06:42:19 | 显示全部楼层 |阅读模式
表A
字段namemobileNoidentityNocreateTimeupdateTime
表B
字段nametypeNocreateTimeupdateTime
问题:把表A中的数据弄到表B中,Type为二种类型(mobileNoidentityNo)No为(mobileNoidentityNo)对应的值
就是把A表中的数据根据mobileNoidentityNo分成两条插入B表
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:42:19 | 显示全部楼层
楼主百度一下unpivot,正好适合你现在的场景
回复

使用道具 举报

千问 | 2021-1-27 06:42:19 | 显示全部楼层
简单看了一下,应该适合我。我先试试。谢谢
回复

使用道具 举报

千问 | 2021-1-27 06:42:19 | 显示全部楼层
引用1楼wmxcn2000的回复:楼主百度一下unpivot,正好适合你现在的场景
好像这个只能用于当前表对吗?我想转换完之后插入新表
回复

使用道具 举报

千问 | 2021-1-27 06:42:19 | 显示全部楼层
引用3楼qq_33759773的回复:好像这个只能用于当前表对吗?我想转换完之后插入新表
insertintot(.......)
select....
fromxxxx
unpivot......
回复

使用道具 举报

千问 | 2021-1-27 06:42:19 | 显示全部楼层
楼主的问题其实是行转列的问题
换一个思维:行转列
即然Type为二种类型(mobileNoidentityNo)
那么你可以用case进行判断或是用decode实现

----创建测试表

create table student_score(


name varchar2(20),


subject varchar2(20),


score number(4,1)

);



-----插入测试数据

insert into student_score (name,subject,score)values('张三','语文',78);
insert into student_score (name,subject,score)values('张三','数学',88);
insert into student_score (name,subject,score)values('张三','英语',98);
insert into student_score (name,subject,score)values('李四','语文',89);
insert into student_score (name,subject,score)values('李四','数学',76);
insert into student_score (name,subject,score)values('李四','英语',90);
insert into student_score (name,subject,score)values('王五','语文',99);
insert into student_score (name,subject,score)values('王五','数学',66);
insert into student_score (name,subject,score)values('王五','英语',91);



-----decode行转列

select name "姓名",


sum(decode(subject, '语文', nvl(score, 0), 0)) "语文",


sum(decode(subject, '数学', nvl(score, 0), 0)) "数学",


sum(decode(subject, '英语', nvl(score, 0), 0)) "英语"

from student_score

group by name;



------ case when 行转列



select name "姓名",


sum(case when subject='语文'


then nvl(score,0)
else 0


end) "语文",


sum(case when subject='数学'


then nvl(score,0)


else 0


end) "数学",


sum(case when subject='英语'


then nvl(score,0)


else 0


end) "英语"


from student_score


group by name;

转换完成后加入新表无非就是在这基础上多加一个
insertintotable的语句
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行