深圳网站设计联系电话wordpress使用不同的页头
news/
2025/10/3 4:11:59/
文章来源:
深圳网站设计联系电话,wordpress使用不同的页头,单页网站修改,个人接外包的网站本文作者#xff1a;dinya内容摘要#xff1a;在开发过程#xff0c;经常遇到一些将表的显示方式进行转换的需求#xff0c;我们习惯性称之为竖表到横表的转换#xff0c;本文通过一个例子来简要说明常见的两种竖表转横表的问题。本文适宜读者范围#xff1a;oracle初级dinya内容摘要在开发过程经常遇到一些将表的显示方式进行转换的需求我们习惯性称之为竖表到横表的转换本文通过一个例子来简要说明常见的两种竖表转横表的问题。本文适宜读者范围oracle初级中级系统环境 oswindows 2000 professional (英文版)oracle8.1.7.1.0正文在实际的应用中我们经常遇到需要转换数据显示方式比如将横表转为竖表或将竖表转换为横表的情况如课程表的显示方式部门平均工资的排名等情况。下面将将根据两个实例子的需求描述给出两种常见的竖表转横表的解决办法本例中的数据意思是一、二、三年级的各科目最高分统计。表结构create table test_table ( grade_id number(8), --年级、一年级、二年级、三年级 subject_name varchar2(30), --科目包含语文、数学、外语、政治等科目 max_score number(8) --最高分)表中数据sql select * from test_table; grade_id subject_name max_score 1 语文 95 1 数学 98 2 语文 86 2 数学 90 2 政治 87 3 语文 93 3 数学 88 3 英语 88 3 政治 979 rows selected. 第一种转换方式需求描述查看每个年级在系统中存在的科目信息并各年级的科目信息按下面的格式显示grade_id subject_name 1 语文 数学 2 语文 数学 政治 3 语文 数学 英语 政治分析在要求得到的结果中每个年级的科目将变成一条记录而且每个年级的科目是不固定的。所以考虑写个函数来解决输入年级信息使用游标得到该年级的所有科目信息并返回值。1、建函数sql create or replace function test_fun(p_grade number) return varchar2 as 2 v_temp varchar2(100):; 3 v_out varchar2(500):; 4 cursor c is select a.subject_name from test_table a where a.grade_idp_grade; 5 begin 6 open c ; --打开游标 7 loop 8 fetch c into v_temp; 9 exit when c%notfound; 10 v_out:v_out|| ||v_temp; 11 end loop; 12 close c; --关闭游标 13 return v_out; 14 exception 15 when others then 16 return an error occured; 17 end ; 18 /function created. sql create or replace function test_fun(p_grade number) return varchar2 as 2 v_out varchar2(500):; 3 cursor c is select a.subject_name from test_table a where a.grade_idp_grade; 4 begin 5 for v_temp in c loop 6 v_out:v_out|| ||v_temp.subject_name; 7 end loop; --系统自动关闭游标 8 return v_out; 9 exception 10 when others then 11 return an error occured; 12 end ; 13 /function created. 2、调用函数得到输入结果sql select distinct a.grade_id,test_fun(a.grade_id) subject from test_table a grade_id subject1 语文 数学2 语文 数学 政治3 语文 数学 英语 政治 第二种转换方式需求描述要求将表中的年级、科目及最高的信息按照下表的格式显示,如果该年级没开的课程,则其最高分用0表示:年级 语文 数学 英语 政治一年级 95 98 0 0二年级 86 90 0 87三年级 93 88 88 97 分析该需求将年级的分数及科目信息由纵向转为横向这样就要针对每个年级的对其科目进行判断存在科目则显示科目的最高分如果不存在显示0。这时候就考虑到使用decode函数来解决。实现如下 select decode(t.grade_id,1,一年级,2,二年级,3,三年级) 年级, sum(decode(t.subject_name,’语文’,t.max_score,0)) 语文, sum(decode(t.subject_name,数学,t.max_score,0)) 数学, sum(decode(t.subject_name,英语,t.max_score,0)) 英语, sum(decode(t.subject_name,政治,t.max_score,0)) 政治from test_table tgroup by t.grade_id 需要说明的是在第一种转换方式中写了两个函数,两个函数实现的是同一个需求所不同的是两个函数中游标使用方式不同地一个函数中手动打开游标循环结束后要求手动关闭。而后一个函数使用for 循环循环结束后系统自动关闭光标。在第二种转换方式中使用了decode函数关于decode的详细用法请参考oracle函数相关文档。总 结上面的两种转换方式是在开发中经常遇到的情况,在开发中的其他类似的转换都可以参考上面的转换方式,使用decode,nvl等函数进行一些特别的处理即可得到想要的显示方式.本文你可以在作者的blog上找到更多内容请登陆作者的blog。作者blog: http://blog.csdn.net/dinya2003/如转载,请保留作者blog信息. 文章整理站长天空 网址http://www.z6688.com/ 以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息谢谢! 转载于:https://www.cnblogs.com/Godblessyou/archive/2010/07/17/1779621.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/925528.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!