Oracle小技巧
Oracle纵向变横向,多行变一行
取处方下的药品大类,以
处方 药品大类
a001 中药.西药,中成药的 的格式显示
/*处方与药品大类的对应 周璇球 20130829*/
SELECT SCFXX01,
replace(trim(max(sys_connect_by_path(SJCXX02, ' '))),' ',',') s_drug_types
FROM(
SELECT YYGLE61.SCFXX01,
YYGL101.SJCXX02,
lag(SJCXX02) over(partition by YYGLE61.SCFXX01 order by SJCXX02) l_SJCXX02
FROM YYGLE61,yygle62,YYGL110,YYGL101
where yygle61.scfxx01 = yygle62.scfxx01
and YYGLE62.SCFMX03 = YYGL110.SYPXX01(+)
and YYGL110.SYPXX14 = YYGL101.SJCXX01(+)
) a
start with l_SJCXX02 is null
connect by nocycle SCFXX01 = prior SCFXX01 and prior SJCXX02 = l_SJCXX02
GROUP BY SCFXX01;
根据原型
select name, max(sys_connect_by_path(report, ' ')) s_report
from
(select name, report, lag(report) over(partition by name order by report) l_report
from tb)
start with l_report is null
connect by name = prior name and prior report = l_report
group by name
order by name;
发现将视图放在内连接里边比在查询列中用子查询的速度要快
(快)
select
max(a.s_drug_types) as s_drug_types
FROM YYGLE61,yygle62,V_LDMZ_PRES_DRUG_TYPES a
where yygle61.scfxx01 = yygle62.scfxx01
and yygle61.scfxx01 = a.scfxx01
(慢)
select
(select a.s_drug_types
from V_LDMZ_PRES_DRUG_TYPES a
where yygle61.scfxx01 = a.scfxx01) as s_drug_types
FROM YYGLE61,yygle62
where yygle61.scfxx01 = yygle62.scfxx01
网上查到的
使用LAG和LEAD函数统计
Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。以下是LAG和LEAD的例子:
SQL> select year,region,profit ,lag (profit,1) over (order by year)
2 as last_year_exp from test;
YEAR REGION PROFIT LAST_YEAR_EXP
---- ------- ---------- -------------
2003 West 88
2003 West 88 88
2003 Central 101 88
2003 Central 100 101
2003 East 102 100
2004 West 77 102
2004 East 103 77
2004 West 89 103
SQL> select year,region,profit ,lead (profit,1) over (order by year)
2 as next_year_exp from test;
YEAR REGION PROFIT NEXT_YEAR_EXP
---- ------- ---------- -------------
2003 West 88 88
2003 West 88 101
2003 Central 101 100
2003 Central 100 102
2003 East 102 77
2004 West 77 103
2004 East 103 89
2004 West 89
Lag函数为Lag(exp,N,defval),defval是当该函数无值可用的情况下返回的值。Lead函数的用法类似。
Lead和Lag函数也可以使用分组,以下是使用region分组的例子:
SQL> select year,region,profit ,
2 lag (profit,1,0) over (PARTITION BY region order by year)
3 as last_year_exp from test;
YEAR REGION PROFIT LAST_YEAR_EXP
---- ------- ---------- -------------
2003 Central 101 0
2003 Central 100 101
2003 East 102 0
2004 East 103 102
2003 West 88 0
2003 West 88 88
2004 West 77 88
2004 West 89 77
3.创建Oracle Job
variable job number; begin
sys.dbms_job.submit(job => :job,
what => 'print;',
next_date => to_date('01-01-4000', 'dd-mm-yyyy'),
interval => 'trunc(sysdate+1)+1/288');
commit;
end;
/
print是存储过程
带参数的存储过程Job
variable job number; begin
sys.dbms_job.submit(job => :job,
what => 'yygl_yktjz(trunc(sysdate));',
next_date => to_date('01-01-4000', 'dd-mm-yyyy'),
interval => 'trunc(sysdate+1)+1/288');
commit;
end;
/
begin
sys.dbms_job.submit(job => :job1,
what => 'declare s1 varchar2(200); s2 varchar2(200); begin p_test.usp_test_jobincs(s1,s2); end;',
next_date => sysdate,
interval => 'sysdate+1/1440');
commit;
end;
/
Oracle去换行,去空格等
/*去除换行*/
update zhzl_address t set t.add_administration_num=replace(t.add_administration_num,chr(10),'');
/*去掉回车*/
update zhzl_address t set t.add_administration_num=replace(t.add_administration_num,chr(13),'');
/*去掉空格*/
update zhzl_address t set t.add_administration_num=trim(t.add_administration_num);
select rowid,yyglk60.*
from yyglk60
where INSTR(syycs04,CHR(32)) > 0
or INSTR(syycs01,CHR(32)) > 0
OR INSTR(syycs02,CHR(32)) > 0
OR INSTR(syycs03,CHR(32)) > 0
OR INSTR(syycs05,CHR(32)) > 0
OR INSTR(syycs04,CHR(10)) > 0
or INSTR(syycs01,CHR(10)) > 0
OR INSTR(syycs02,CHR(10)) > 0
OR INSTR(syycs03,CHR(10)) > 0
OR INSTR(syycs05,CHR(10)) > 0
;
select *
from yyglk60
where INSTR(syycs04,CHR(9)) > 0
or INSTR(syycs01,CHR(9)) > 0
OR INSTR(syycs02,CHR(9)) > 0
OR INSTR(syycs03,CHR(9)) > 0
OR INSTR(syycs05,CHR(9)) > 0
update yyglk60
set syycs04 = replace(syycs04,' ','') ,
syycs01 = replace(syycs01,' ',''),
syycs02 = replace(syycs02,' ',''),
syycs03 = replace(syycs03,' ',''),
syycs05 = replace(syycs05,' ',''),
syycs06 = replace(syycs06,' ','')
where syycs04 like '% %' or syycs01 like '% %' or syycs02 like '% %' or syycs03 like '% %';
替换空格:
update yygl120 set szzxm24 = trim(szzxm24) where INSTR(szzxm24,' ') > 0 ;
Oracle小技巧的更多相关文章
- Oracle 小技巧
Oracle小技巧 ###add at 18-10-11 1 ed 在sqlplus当中 如果前一条语句输入有误的话 可以输入ed再回车.在进行编辑 输入ed后有弹窗,可以对之前的输入语句进行编辑 ...
- toad for oracle 小技巧
在SQL*LOADER 工具上(或者称为SQLLDR,读为:“sequel loader”),因为它仍然是装载数据的主要方法,SQLLDR 能够在极短的时间内装 载庞大数量的数据. 我也是初使用,理解 ...
- Oracle小技巧_不同表空间不同用户导入导出数据dmp
[博主注:数据库方面 ITPUB网站及博客内容非常丰富] 转载来源ITPUB 博客 经常有人会问:原来的数据在USERS表空间里面,我想把它IMP进APP表空间,我已经修改了目的用户的默认表空间, ...
- 关于oracle的sqlplus的另一些小技巧
执行脚本的命令在上一节已经讲过,不再重复. sqlplus user/password@ip:port/servicename @/path/sqltest.sql; sqltest的内容及注释: - ...
- Java在处理大数据的时候一些小技巧
Java在处理大数据的时候一些小技巧 发布时间:2013-05-09 00:00:00 来源:中国IT实验室 作者:佚名 关键字:Java 众所周知,java在处理数据量比较大的时候,加载到内存必 ...
- Django中的ORM框架使用小技巧
Django中的ORM框架使用小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Django对各个数据提供了很好的支持,包括PostgreSQL,MySQL,SQLite ...
- 杂谈---小故事小道理,面试中的小技巧(NO.2)
本篇是接着上一篇面试随笔的,上一次有猿友反应写的有些“扯淡”,LZ思来想去最大的原因可能是由于上一章写的全是一些大忌,既然是大忌,那么在现实当中发生的概率还是相对较小的,大部分人还是很少在面试中犯如此 ...
- PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键
PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键 1. 附加:工具栏不见了 调色板(Palette)快捷工具栏不见了PowerDesigner ...
- 「Python-Django」Django中使用数据库的 9 个小技巧
Django 中使用数据库的 9 个小技巧. 1. 过滤器聚合 在 Django 2.0 之前,如果你想得到“用户总数”.“活跃用户总数”等信息时,你不得不使用条件表达式. Django 2.0 中, ...
随机推荐
- centos custom iso
http://www.smorgasbork.com/2012/01/04/building-a-custom-centos-6-kickstart-disc-part-1/ Create a dir ...
- linux地址空间划分
LDD讲的很明白了: Linux 是一个虚拟内存系统, 意味着用户程序见到的地址不直接对应于硬件使用的物理地址. 虚拟内存引入了一个间接层, 它允许了许多好事情. 有了虚拟内存, 系统重运行的程序可以 ...
- 二十、ValueStack的常用方法
二十.ValueStack的常用方法 void set(String key,Object value):先获取根栈栈顶的Map,如果不存在,压入一个新的Map public String execu ...
- 逻辑回归的分布式实现 [Logistic Regression / Machine Learning / Spark ]
1- 问题提出 2- 逻辑回归 3- 理论推导 4- Python/Spark实现 # -*- coding: utf-8 -*- from pyspark import SparkContext f ...
- js实现文字截断
先前用jq做了一个文字截断功能,但是不用jq的项目要实现此功能还要引如jq显得过于麻烦.这里写了一个js的文字截断功能.直接上代码. HTML(测试用的): <div>我是pox我是pox ...
- IOS学习感想
1.一开始学习的时候将会感到非常的难,即使自己曾经学过C/JAVA/HTML/CSS/JS/PHP等,但是对于学过C++的人来说,我就不知道了.因为它的语法不同于任何一门语言,所以说入门难是正常的.但 ...
- aspx页面中用Input 标签实现上传图片功能
实现上传图片功能需单独的建立一个aspx页面, 其中前台页面需要注意两点: a)实现上传功能的input的type="file" b)设置请求报文头为 enctype=" ...
- [leetcode]_Valid Parentheses
题目:判断给定字符串中的括号是否合法.题目中涉及三种符号'(' + ')' , '[' + ']' , '{' + '}'. 思路:利用stack来存储符号. 注意申请char型stack是: Sta ...
- canvas 绘制矩形和圆形
canvas绘制有两神方法:1).填充(fill)填充是将图形内部填满. 2).绘制边框 (stroke)绘制边框是不把图形内部填满,只是绘制图形的外框. 当我们在绘制图形的时候,首先要设定好绘制的样 ...
- 配置pxe 自动化安装centos6.7
dhcp服务器是pxe自动化安装的必要条件,因此先搞定dhcp服务器,yum -y install dhcp, rpm -ql dhcp查看安装了哪些包,less /etc/dhcp/dhcpd.c ...