根据某个字段值,产生想要的重复记录数
示例 ID NAME QTY 1 A 3 1 B 2 2 A 0 2 B 1 如何通过一条SQL得出以下结果呢? ID NAME QTY ROWNUM 1 A 3 1 1 A 3 2 1 A 3 3 1 B 2 1 1 B 2 2 2 B 1 1即根据QTY产生重复记录,产生的记录数=QTY值,如果为0不产生记录,QTY数值大小不固定[@more@]解决方法:下面的方法只是假设重复的最大记录为10条SQL> with test as 2 ( 3 select 1 ID, 'A' NAME , 3 QTY from dual union all 4 select 1
巧用grouping进行分组统计
grouping以前有遇到过,但不太记得,今天又在论坛刚到一则贴子,巧妙的运用了grouping进行分组统计与小计,下面记录如下:[@more@]例表数据如下:ID NAME GRADE1 a 101 a 151 b 51 b 101 c 202 a 5.....要求的结果是:对id,name分组合计,再对id求小计,要求小计时只对name 是a,b求和,不用UNION怎么写sql语句?结果集:ID NAME SUM(GRADE)1 a 251 b 151 c 201 小计 40 --ID=1时 name
巧用keep 进行分组
论坛贴子:已有数据:==========会计期 物料分类 期初 本期入 本期出 期末200901 C1 10 1 2 9200901 C2 10 1 3 8200902 C1 9 0 2 7200902 C2 8 1 2 7查询 200801-200912 的数据,查询结果:==========开始会计期 结束会计期 物料分类 期初 本期入 本期出 期末200901 200902 C1 10 1 4 7200901 200902 C2 10 2 5 7注意:期初,取查询范围内存在的最小会计期的
字符串截取从前几位到后几位
例:要截取一个字符串,从第一位到后第五位,该怎么操作???[@more@]方法一:SELECT REVERSE(SUBSTR(REVERSE('PENGWZHANIU'), 5)) STR FROM DUAL;--测试结果:pengwzh方法二:SELECT (CASE WHEN LENGTH(&STR) < 5 THEN &STR ELSE SUBSTR(&STR, 1, LENGTH(&STR) - 4) END) STR FROM DUAL;--测试结果:pengwzh说明:方法一是利用二次反向取,巧妙取出了第一位到后五位的字符串,方法二则先判断字符串长度,如果不够五位则全取,否则从第一位开始截取,截取字符个数为(整个长度-4)位
搬家了~~
前几天搬家了,从五环外搬到了三环了,生活高档了些了,可是米米少了好多了,心痛,不过上班近最重要,不想那么累啊,我还要多活几年,呵~~算是值了!!庆祝下下~[@more@]
表连接时update与delete操作需注意的地方
刚刚在论坛上又看到一则很老的精华贴子,经测试后越发觉的好,于是总结了下,发上来了,以后备用,呵~~~[@more@]一. 表连接的update测试 /*******************先看下面的测试******************/SQL> drop table test1;表已删除。SQL> drop table test;表已删除。SQL> create table test(a number,b number,c number ,d varchar2(6));表已创建。SQL> insert into test values(1,1,1,'1');已创建 1 行。SQL> insert into test values(2,2,2,'2');已创建 1 行。SQL> insert into test values(3,3,3,'3');已创建 1
translate函数
Translate函数与replace函数及其相似,都是用来做字符替换的,但又有所区别,replace是对整个字符替换为指定的字符,但translate是一个字符一个字符对应替换,区别看下面的sql[@more@]SQL> select translate('abc3243dbc','abc','efg') col from dual;COL----------efg3243dfgSQL> select replace('abc3243dbc','abc','efg') col from dual;COL----------efg3243dbc从上面的sql可以看出,replace函数是将整个字符abc替换为efg,而translate是将a替换为e,b替换为f,c替换为g。下面例举translate的其它几种情况SQL> select translat
rman备份恢复-rman恢复数据文件测试
最近开始学习rman备份恢复了,主要看的是三思的资料,要谢谢他了,呵~~根据测试的结果,整体了下测试的笔记,发上来,供日后复习了!这一章节主要讲的是恢复数据文件测试 [@more@]第四章 rman恢复测试 一、windows冷备后删除数据文件,rman恢复 在关闭数据库的前提下,直接在window复制所有的控制文件、数据文件及参数文件,即D:oracleproduct10.2.0oradataorcl将orcl整个文件夹copy一份,接着做一下的操作。 --创建表空间 SQL> create tablespace "TEST01" 2 logging 3 datafile 'D:oracleproduct10.2.0oradataorc
rman备份恢复-定制rman备份计划
最近开始学习rman备份恢复了,主要看的是三思的资料,要谢谢他了,呵~~根据测试的结果,整体了下测试的笔记,发上来,供日后复习了!这一章节主要讲的是定制rman备份计划[@more@]第三章 实战rman备份 一、定制rman脚本 要求如下: 1、每天夜间1点执行; 2、数据库全备,同时备份控制文件及归档日志文件,备份文件保存至:D:backup目录下,并在完成归档日志文件备份后,自动删除已备份的归档日志; 3、备份保留7天,过期则自动删除; 4、保留操作日志备查; 开始编写rman脚本,并保存至F:oracleScriptbackupdatabase_backup_orc
巧用row_number() over()函数,选取重复记录中想要的值
刚在论坛看到一个贴子,感觉不错,就拿来测试了下,呵~~[@more@]贴子内容 如何从某字段重复的多条记录条件查找 求一个SQL语句写法。 现有以问题,表数据如下: A B C 1 a x 1 a y 1 a z 2 a x 2 a z 3 a x 需要查询结果:如果A字段存在相同值,且重复记录中C字段存在值为y的记录,只取C字段值为Y的记录,如果重复记录不存在C字段为Y的记录,任取一条A字段重复的记录。 如上表所需查询结果为: A B C 或者 A B C 1 a y 1 a y 2 a x 2 a z 3 a x 3 a x 下面是解答方法:SQL> edit; 已写入 file afiedt.buf1 create tabl
rman备份恢复-rman备份演练
最近开始学习rman备份恢复了,主要看的是三思的资料,要谢谢他了,呵~~根据测试的结果,整体了下测试的笔记,发上来,供日后复习了!这一章节主要讲的是rman备份演练[@more@]第二章 rman备份演练一、备份形式1、镜像复制(Image Copies)镜像复制实际上就是数据文件、控制文件或归档文件的复制,与用户通过操作系统命令建立的文件复制实质一样,只不过RMAN是利用目标数据库中的服务进程来完成文件复制,而用户则是用操作系统命令。所以镜像复制的方式体现不出RMAN的优势,也并非我们讨论的重点。2、备份集(Backup Sets)备份集是通过RMAN创
rman备份恢复-rman入门
最近开始学习rman备份恢复了,主要看的是三思的资料,要谢谢他了,呵~~根据测试的结果,整体了下测试的笔记,发上来,供日后复习了!这一章节主要讲的是rman入门[@more@]第一章rman入门 一、rman简介 Rman是用来备份和恢复数据库的,无论是用rman来备份还是恢复数据库,都必须先启动数据库并且加载实例 二、连接本地数据库 C:Documents and Settingspengwzh>set oracle_sid=orcl C:Documents and Settingspengwzh>rman target / 恢复管理器: Release 10.2.0.1.0 - Production on 星期二 3月 31 13:28:30 2009 Copyright
oracle分析函数,keep and over解说
今天又学到了一个新的分析函数了,over()函数早就接触过,但keep和over结合用还是第一次见,详情见下面内容了,呵~~[@more@]先看下面的测试例子: --创建测试表 create table test as select 1 ID, 111 mc, 1 sl from dual union select 1, 222, 1 from dual union select 1, 333, 2 from dual union select 1, 555, 3 from dual union select 1, 666, 3 from dual union select 2 ,111 ,1 from dual union select 2 ,222 ,1 from dual union select 2 ,333, 2 from dual union select 2 ,555, 2 from dual; SQL> select
树型结构start with..........connect by prior
刚刚一同事问我,知道一个行政区划代码,如何求这个行政区划的上级和下级所有行政区划,脑海中有start with...prior这种树型求法,查看之前的笔记后,拿监管的pa50做测试如下:[@more@]一.求株洲市的上级行政区划 select a.aab301,a.apa133 from pa50 a start with a.aab301 = '430200' connect by a.aab301 = prior a.apa132;--运行结果: AAB301 APA1331 430200 株洲市2 430000 湖南省3 100000 全国二.求株洲市的下级行政区划 select a.aab301,a.apa133 from pa50 a start with a.aab301 = '430200' con
学习chr(0)
看论坛里一则“chr(0)的奇特用法”的贴子,有点意思~~[@more@]在pl/sql develop中测试chr(0)时,后面的内容不显示,测试结果如下:select 'aaa' || chr(0) || 'bbb' from dual; --aaaselect length('aaa' || chr(0) || 'bbb') from dual; --7select substr('aaa' || chr(0) || 'bbb', 5, 3) from dual; --bbbselect substr('aaa' || chr(0) || 'bbb', 2, 5) from dual; --aa但是在orcle自带的sqlplus中测试结果却不同.SQL> select 'aaa'||chr(0)||'bbb' from dual;'AAA'||-------aaa bbbSQL> select substr('aaa' || chr(0) || 'bbb',