在企业中,尤其是中国式报表,很常见。
--交叉报表实例:
将表:
______________________________________
|a_name | a_subject | a_score |
|张三 | 语文 | 80 |
|张三 | 数学 | 70 |
|张三 | 英语 | 60 |
|李四 | 语文 | 90 |
|李四 | 数学 | 30 |
|李四 | 英语 | 100 |
--------------------------------------
转换成:
______________________________________
| \ | 语文 | 数学 | 英语 |
|张三 | 80 | 70 | 60 |
|李四 | 90 | 30 | 100 |
--------------------------------------
--创建表
drop table t_across;
create table t_across(
a_name varchar2(20) not null,
a_subject varchar2(20) not null,
a_score number(3)
);
--插入数据
insert into t_across(a_name,a_subject,a_score)
values('张三','语文',80);
insert into t_across(a_name,a_subject,a_score)
values('张三','数学',70);
insert into t_across(a_name,a_subject,a_score)
values('张三','英语',60);
insert into t_across(a_name,a_subject,a_score)
values('李四','语文',90);
insert into t_across(a_name,a_subject,a_score)
values('李四','数学',30);
insert into t_across(a_name,a_subject,a_score)
values('李四','英语',100);
commit;
--显示数据
select * from t_across;
--显示交叉表的格式
select a_name "学生\成绩",sum(decode(a_subject,'语文',a_score,null)) "语文",
sum(decode(a_subject,'数学',a_score,null)) "数学",
sum(decode(a_subject,'英语',a_score,null)) "英语"
from t_across
group by a_name;
主要是用到decode函数来实现交叉报表
分享到:
相关推荐
交叉表 sql http://whitewolf.0fees.net
Oracle动态交叉表生成
在管理系统中,管理人员往往需要对业务数据进行不同需求的分层汇总,并产生各种形式交叉报表。为了实现此类报表,程序员需要构造层次结构非常复杂的SQL语句,甚至使用前台编程工具或其它报表工具来完成。 以下通过二...
Oracle数据库交叉查询经典 交叉表、行列转换和交叉查询经典
sqlserver中 交叉表的使用 及遇到的一些小问题
范式下的Oracle数据库设计及其动态交叉表的生成.pdf
范式下的Oracle数据库设计及其动态交叉表的生成 (1).pdf
如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. 2、WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的...
如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WHERE子句中的连接顺序.: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间...
选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理...如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.
Oracle SQL性能优化 (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ...如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.
选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你...
如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WHERE子句中的连接顺序.: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间...
Oracle 数据库中的SQL是当今市场上功能最强大的SQL实现之一,而本书全面展示了这一工具的威力。如何才能让更多人有效地学习和掌握SQL呢?Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习...
如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WHERE子句中的连接顺序.: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间...
8.1报表统计常用 16 8.2缺省情况组函数处理什么值 16 8.3当组函数要处理的所有值都为null时 16 8.4行级信息和组级信息 16 九、 group by子句 17 9.1语法和执行顺序 17 9.2分组过程 17 9.3常见错误 17 9.4多列分组 17...
说明:用于连接到oracle数据库,也可实现用户的切换 用法:conn 用户名/密码 [as sysdba/sysoper] 注意:当用特权用户连接时,必须带上sysdba或sysoper 例子: 3. 断开连接(disc) 说明:断开与当前数据库的连接 ...