Oracle中行转列以及Join小总结

在Oracle中行转列,可以利用decode函数:

如有学生表A:

IDNAMESUBJECTSCORE
1张三语文90
2张三数学80
3李四语文99
4李四数学78
5张三英语89

现要转换成下表:

NAME语文数学英语
张三908089
李四9978 

这是一个典型的行转列过程,只需如下SQL即可:

select NAME, sum(decode(SUBJECT,'语文', SCORE, null)), sum(decode(SUBJECT,'数学', SCORE, null)), sum(decode(SUBJECT,'英语', SCORE, null)) from A  group by NAME;


关于Join:

1.inner join :

select * from A a, B b where a.id = b.aId 与

select * from A a inner join B b on a.id = b.aId 是一样的;

2. left join 与 left outer join:

select * from A a left join B b on (a.id = b.aId);

此时,不管B中有没有对应A的记录,都会查出A表中的所有记录;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值