您的位置:首页 > 数据库 > Oracle

Oracle中行转列以及Join小总结

2011-08-23 17:26 260 查看
在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表中的所有记录;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: