网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle 9i切换数据库的日志模式.
.LINUX中使用鼠标滚轮.
.Oracle 的位图索引.
.Oracle的共享内存段.
.使用script查找DDL语句统计数据.
.RedHat7.1下安装Oracle8.1.7.0.1.
.Application Server额外功能.
.Oracle的三种备份方式具有不同的.
.请问ORACLE有自增数值型吗?.
.*[原创]*安装文档ORACLE9i for s.
.通俗解说ORACLE.
.如何使用exp以传输表空间的方式将.
.如何使SQL Server数据库支持XML.
.PCTFREE与PCTUSED对高性能和有效.
.ORACLE性能调整.
.如何用脚本实现分割文件.
.ZT:Oracle PL/SQL入门之慨述.
.用来在硬件上部署管理应用程序Or.
.Oracle 9i修改数据库的工作模式.
.oracle基本概念的学习笔记.

案例讨论:Oracle数据库的分组问题

发表日期:2008-2-9


曾经,有个用户提出了以下的一个问题,随即有很多朋友提供了他们的解决方案,我们的专家将这些记录整理出来,供大家参考学习。   问:要求把表B按照CLM001分组求和计算score的值,然后加到表A中对应CLM001的score的值。如何写更新表A的SQL语句?   表A:   CLM001        SCORE   001                 0   002                 0   003                 0   004                 0   其中CLM001是主键。   表B:   ID CLM001 SCORE   0      001       12   1      001       24   2      002      110   3      004      220   4      004       20       答:
  with r as {   select CLM001 ,sum(score) as total from b group by CLM001   }   update a set score = (select total from r where r.CLM001 =a.CLM001)   where exists (select 1 from r where r.CLM001 =a.CLM001)
  点评:此方法需要写存储过程,否则在程序中没法用。
  create or replace procedure p_test   as   v_clm001 a.clm001%type;   cursor c_record is   select distinct clm001 from b;   begin   open c_record;   loop   fetch c_record into v_clm001;   exit when c_record%notfound;   update a set score =(select sum(score) from b where clm001=v_clm001)   where clm001=v_clm001;   end loop;   end;
  点评:这是在PL/SQL中的语句,此问题用PL/SQL解决也不失为一个简单的方法。
update a set a.score = a.score + (select b.score from a a,   (select CLM001,sum(score) from b group by CLM001) b where a.CLM001 = b.CLM001)
  点评:最佳答案,此类问题用视图解决很方便!

上一篇:Oracle PL/SQL语言初级教程之异常处理 人气:748
下一篇:破解Oracle中国高层频繁变动之谜 人气:1132
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐