Oracle汇总笔记
一些学习,工作可能会用的到的小汇总
白露-
一只不爱学习的咕咕~(。>ㅿ<。)很少看私信,请勿私信等回复,抱歉抱歉
展开
-
[Oracle]去除某行,单列重复的数据
去除某行,单列重复的数据原创 2023-02-21 16:33:35 · 1336 阅读 · 1 评论 -
【Oracle】where 条件的特殊限制
特殊的限制原创 2022-11-16 17:13:34 · 346 阅读 · 0 评论 -
【Oracle】查询表总某列是否全部满足条件*例子详解
我们先将AL_post 表整合数据,这样我们就知道AB全能有哪些上岗证,CD全能有哪些上岗证。然后再将数据表postData整合,这样我们就知道,某个区域里,该工号下具体有那些上岗证了。X区域,共有A,B,C3种上岗证,如果一个人有这3张上岗证,就判断为AB全能。L区域,共有C,D2种上岗证,如果一个人有这2张上岗证,就判断为CD全能。最终我们得出,X区域,AB全能的人数为1,其余员工都不符合条件。工号为01的员工,在X区域有3张上岗证,在L区域有一张上岗证。工号为02的员工,在X区域有1张上岗证。原创 2022-10-31 10:31:01 · 422 阅读 · 0 评论 -
【Oracle】查询表总某列是否全部满足条件
某列是否全部满足条件原创 2022-10-30 23:01:49 · 474 阅读 · 0 评论 -
Oracle 补全数据
如果需求:你要将售出和进货表合并起来,也并不难,只需要新增一个。数据看起来并不是我们想要的样子,因为小黑只有。表的数据,我们想要的效果是:哪怕小黑在。表里没有数据,也要显示出来.然后就很好办了,只需要。手中有这样一张进货表。原创 2022-10-19 17:32:55 · 967 阅读 · 0 评论 -
Oracle procedure update 判断
但procedure里不支持此种用法,所以我们只能通过变形来实现目的。其实逻辑并不难,只是提笔忘字,在学习或工作时想不起来,所以在此记录.我们通过如下的方式来进行变形操作,已到达目的。原创 2022-08-19 17:11:58 · 682 阅读 · 0 评论 -
Oracle 限制时将空值排除
限制时为null的数据丢失原创 2022-08-05 17:18:59 · 981 阅读 · 0 评论 -
Oracle去年和今年的周数,并且附带开始时间与结束时间
Oracle去年和今年的周数,并且附带开始时间与结束时间原创 2022-07-15 16:39:09 · 810 阅读 · 0 评论 -
Oracle数据间断累加2
要计算此数据开始到间断之间的连续次数,如果间断,则重新开始计算下一个间断间的连续次数原创 2022-07-08 11:09:51 · 374 阅读 · 0 评论 -
oracle 一行转多行+多行转一行
oracle一行转多行,实测有效原创 2022-06-06 10:43:07 · 7677 阅读 · 0 评论 -
Oracle where 满足条件大于,不满足条件等于
Oracle where 满足条件大于,不满足条件等于原创 2022-06-02 18:03:11 · 1042 阅读 · 0 评论 -
Oracle数据间断累加
一.问说明:当我们手里有一列数据(假设为时间数据),此时间数据是不规则间断的要求:我们要计算此数据开始到间断之间的连续次数,如果间断,则重新开始计算下一个间断间的连续次数二.解首先,我们要计算出辅助列(contin/contin2):select shift_date,case when lag(shift_date,1,shift_date+1)over(order by shift_date)+1=shift_date then (case when lead(shift_dat原创 2022-05-09 11:07:50 · 882 阅读 · 0 评论 -
Oracle效率提升
在where后,先执行那些执行起来比较快,能快速过滤大量的限制,再执行精细的限制。例如:先执行rep_type=‘Y’,然后再执行updatatime>=trunc(sysdate)+7.5/24,总共运行时长:0.4-0.5秒而相反,先进行时间等精细限制,再执行rep_type=‘Y’,则要花费2-3秒。...原创 2022-04-25 15:52:08 · 726 阅读 · 0 评论 -
Oracle where in (+)并在此基础上增加更多值
一.代码研究无意间发现一段有意思的代码:where t2.name=t1.name(+) and t2.name in ('小白','小蓝','小黑',t1.name,(select t3.name from name_all t3 where company='ORACLE' ))T2表是一张全部人员表单,里面记录的信息比T1表里的多,所以这里需要(+),但T1这张表里又缺失了一部分数据,所以我们手动添加数据(‘小白’,‘小蓝’,‘小黑’),同时再手动添加name_all这张表里的数据.二.具原创 2021-11-23 17:34:30 · 721 阅读 · 0 评论 -
Oracle小思路
一.数据表select * from my_test二.维护表select * from my_test_Maintain三.逻辑第一张表为数据表,item为一类数据的归类,state为此归类的状态,方便为ok和no第二张表为客户维护表,item为一类数据的归类,isok记录客户维护的数据,因为oracle没有Boolean类型,所以1为需要此归类状态为ok的数据,0为不需要此归类状态为ok的数据, isno同理.根据维护表我们可以大致知道,客户需要item为a,且状态(state)为原创 2021-11-15 11:15:34 · 271 阅读 · 0 评论 -
Oracle简单的max/sum判断
一.原表二.整合我们想要type1栏位中,有逗号的就计算数量的和,没有逗号的就取最大值select type1,(case when max(type1) like '%,%' then sum(quantity) else max(quantity) end)quantity from you_tableGROUP BY type1原创 2021-10-29 14:14:44 · 431 阅读 · 0 评论 -
Oracle 一行转多行(二)
一.一行转多行使用如下语句拆分:SELECT substr(a, instr(a, ',', 1, levels.lvl) + 1, instr(a, ',', 1, levels.lvl + 1) -(instr(a, ',', 1, levels.lvl) + 1)) as a,t1.you_col,t1.sortFROM(SELECT ',' || you_col || ',' AS a,length(you_col) - nvl(length(REPLACE(you_col, ',')),原创 2021-10-28 10:26:11 · 711 阅读 · 2 评论 -
Oracle 一行转多行(一)
一.一行转多行使用如下语句拆分:select DISTINCT regexp_substr(you_col,'[^,]+',1,level)a,t.* from you_table t connect by level<=length(you_col)-length(regexp_replace(you_col,',',''))+1 order by sort二.进阶(1)使用如下语句拆分:select DISTINCT regexp_substr(you_col,'[^,]+原创 2021-10-28 10:08:57 · 5241 阅读 · 1 评论 -
Oracle where if
一.where case whenOracle where不能如其他sql直接添加if逻辑,只能使用case whenselect * from table_data t where (case when t.column_data='条件' then t.column_datawhen t.column_data='条件2' then t.rep_data)='条件3'二.where case when(变形)select * from table_data t where t.c原创 2021-10-27 09:39:24 · 14629 阅读 · 0 评论 -
Oracle获取日期&天数
一.获取当年所有日期select trunc(sysdate,'yyyy')+rownum-1 as pday from dual connect by rownum<=add_months(trunc(sysdate,'yyyy'),12)-trunc(sysdate,'yyyy')--where pday<trunc(sysdate)/*如此可查询从当年1号到昨天的日期*/二.获取当月所有日期select trunc(sysdate,'mm')+rownum-1 as pday原创 2021-10-25 16:10:48 · 11279 阅读 · 1 评论