Oracle中行转列以及Join小总结
2011-08-23 17:26
260 查看
在Oracle中行转列,可以利用decode函数:
如有学生表A:
现要转换成下表:
这是一个典型的行转列过程,只需如下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表中的所有记录;
如有学生表A:
ID | NAME | SUBJECT | SCORE |
1 | 张三 | 语文 | 90 |
2 | 张三 | 数学 | 80 |
3 | 李四 | 语文 | 99 |
4 | 李四 | 数学 | 78 |
5 | 张三 | 英语 | 89 |
NAME | 语文 | 数学 | 英语 |
张三 | 90 | 80 | 89 |
李四 | 99 | 78 |
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表中的所有记录;
相关文章推荐
- Join操作的总结以及在Presto中的使用
- oracle的建表空间,imp导入导出,以及一些简单自我总结
- oracle EM 管理以及诊断 总结
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核
- 关于oracle的表空间,分区表,以及索引的总结
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结
- oracle提供的关于数值或字符与其用于实际存储到硬盘上的编码值间以及不同进制的数值间的转化方法的总结[收集中]
- oracle的表空间、分区表、以及索引的总结
- 关于oracle的表空间,分区表,以及索引的总结
- 关于oracle的表空间,分区表,以及索引的总结
- oracle的表空间、分区表、以及索引的总结
- 关于oracle的表空间,分区表,以及索引的总结
- 关于oracle的表空间,分区表,以及索引的总结
- Oracle创建用户表空间以及导入数据总结
- (JAVA)对volatile和synchronized以及join()的理解和总结
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核
- Oracle监听出现的问题总结,以及解决办法
- 转 关于oracle 分区表 表空间以及索引的总结
- oracle安装失败问题总结以及em失败问题
- oracle 10g 管理权限和角色,以及有关方面的数据字典的使用方法总结