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 中, ...
随机推荐
- poj1942 Paths on a Grid
处理阶乘有三种办法:(1)传统意义上的直接递归,n的规模最多到20+,太小了,在本题不适用,而且非常慢(2)稍快一点的算法,就是利用log()化乘为加,n的规模虽然扩展到1000+,但是由于要用三重循 ...
- JavaScript编程规范
最近看NodeJS中,有一部分写JS约定俗成的编程规范(附录B,详情参考附件),感觉在实际工作中能用到, 大致意思分享给大家,详情参考附件: 1.缩进:建议两空格 作为Node.js代码的缩进标记: ...
- 修改 Ueditor 默认显示的字体大小
默认字体为16px,有点大,为了美观而且一屏可以显示更多内容,可以修改为12px 打开:ueditor.all.min.js 我用的是压缩版 找到如下代码: body{margin:8px;font- ...
- ado.net工厂模式DbProviderFactories
DbProviderFactory f = DbProviderFactories.GetFactory(System.Configuration.ConfigurationManager.Conne ...
- Android开发教程app下载无法成功创建问题
本文明来给各位同学介绍一下关于cordova cteate app 时下载失败无法成功创建的解决方法,有碰到此问题的同学可进入参考. 使用如下语句创建一个cordova应用: 代码如下 cordova ...
- win7如何设置某个软件不弹出用户账户控制
手动修改注册表: 在 HKEY_CURRENT_USERS\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 键下面 ...
- 使用plupload绕过服务器,批量上传图片到又拍云
本文最初发布于我的个人博客:Jerry的乐园 综述 论坛或者贴吧经常会需要分享很多图片,上传图片比较差的做法是上传到中央服务器上,中央服务器再转发给静态图片服务器.而这篇文章讲介绍如何使用pluplo ...
- SQL SERVER中查询参数为空(null)时默认查询所有的实现
最近在项目中碰到一个比较有意思的问题,网上查找了一些方法,在这里总结分享一下. 我们经常会碰到这样的场景:需要查询数据,有一些查询条件,但是查询的时候,我们希望在某个条件为空的时候,则不筛选这个条件, ...
- 利用Newtonsoft.Json实现Json序列化与反序列化
在项目中用到了Newtonsoft.Json来实现序列化和反序列化,在这里写下实现代码. 1.创建类用于排除不序列化的属性 public class ExcludePropertiesContract ...
- about the pageload and page init event
Page_Init The Page_Init event is the first to occur when an ASP.NET page is executed. This is where ...