oracle-在线等 有关对(lag函数)的使用或者其他的函数可以达到目的的也可以

问题描述

在线等 有关对(lag函数)的使用或者其他的函数可以达到目的的也可以
在一张日历表中有一个字段名称为ISOM只存在两个数值,0的意思代表不是交易日,1的意思代表交易,另外有一个字段TIME就是按顺序来的日期,怎样凑出第三个字段C这个字段的意思是,如果ISOM为0,则要取上一个最近的标为1的日期,如果为1,就取当天的日期
(在ORACLE里面执行)

解决方案

发让人让人人反反复复

解决方案二:

 create table test_date(   t_TIME varchar(20)   t_ISOM number default 0)DELETE FROM test_date;insert into test_date(t_TIMEt_ISOM) values('20140101'1);insert into test_date(t_TIMEt_ISOM) values('20140102'0);insert into test_date(t_TIMEt_ISOM) values('20140103'0);insert into test_date(t_TIMEt_ISOM) values('20140104'0);insert into test_date(t_TIMEt_ISOM) values('20140105'0);insert into test_date(t_TIMEt_ISOM) values('20140106'0);insert into test_date(t_TIMEt_ISOM) values('20140107'0);insert into test_date(t_TIMEt_ISOM) values('20140108'1);insert into test_date(t_TIMEt_ISOM) values('20140109'1);insert into test_date(t_TIMEt_ISOM) values('20140110'0);insert into test_date(t_TIMEt_ISOM) values('20140111'1);insert into test_date(t_TIMEt_ISOM) values('20140112'0);insert into test_date(t_TIMEt_ISOM) values('20140113'0);insert into test_date(t_TIMEt_ISOM) values('20140114'1);

select
case when T_ISOM=1 THEN T_TIME
ELSE
N
END RESULT_TIME --要的结果
C.*
FROM
(
SELECT B.*(M-B.T_TIME) AS M_D(B.T_TIME-N) AS N_D FROM
(
SELECT A.*MAX(DNEXT) OVER(PARTITION BY x) AS MMIN(DPRE) OVER(PARTITION BY x) AS N FROM
(
SELECT t_TIMEt_ISOMROW_NUMBER() OVER(ORDER BY t_TIME)-ROW_NUMBER() OVER(PARTITION BY t_ISOM ORDER BY t_TIME) x
Lead(t_TIME) over(order by t_TIME) as dnextlag(t_TIME) over(order by t_TIME) as dpre
FROM test_date
) A order by t_time
) B
) c order by t_time

> 
时间: 2024-08-03 14:55:00

oracle-在线等 有关对(lag函数)的使用或者其他的函数可以达到目的的也可以的相关文章

oracle在线重定义包DBMS_REDIFINITION #

http://blog.itpub.net/post/468/12855 在一个高可用系统中,如果需要改变一个表的定义是一件比较棘手的问题,尤其是对于7×24系统.Oracle提供的基本语法基本可以满足一般性修改,但是对于把普通堆表改为分区表,把索引组织表修改为堆表等操作就无法完成了.而且,对于被大量DML语句访问的表,幸运的是,Oracle从9i版本开始提供了在线重定义表功能,通过调用DBMS_REDEFINITION包,可以在修改表结构的同时允许DML操作. 在线重定义表具有以下功能: 1.

杀掉oracle在线用户脚本分享_linux shell

杀掉oracle在线用户,在oracle所在服务器上使用root用户执行该脚本参数说明$1为该oracle用户 复制代码 代码如下: #!/bin/shfunction _oracleplus(){su - oracle -c "$oraclehome/bin/sqlplus /nolog" <<EOFconnect / as sysdba;$1exitEOF}echo "start select $1 session!!!"selectUS="

Oracle结果集缓存(Result Cache)--服务器、客户端、函数缓存

Oracle结果集缓存(Result Cache)--服务器.客户端.函数缓存 在11g中,Oracle提供了结果集缓存特性.该缓存是在共享内存中存储全部的结果集,如果一个查询SQL被执行,且它对应的结果集在缓存中,那么,该SQL的几乎全部开销都可以避免.这些开销包括,解析时间.逻辑读.物理读和任意的通常可能会遭遇的争用.但是,在实际的情况中,结果集缓存仅在少数的情况下是有效的,原因有如下几点: (1)有数据重叠的多个SQL会在缓存中保存冗余的数据. (2)对依赖对象的任何改变(包括对查询中引用

【函数】Oracle函数系列(2)--数学函数及日期函数

[函数]Oracle函数系列(2)--数学函数及日期函数   1  BLOG文档结构图   2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 数学函数 ② trunc和round函数 ③ 常用日期函数 Tips: ① 本文在itpub(http://blog.itpub.net/26736162).博客园(http://www.cnblogs.com/lhrbest)和微信公众号(xiaoma

【函数】Oracle函数系列(1)--字符函数

[函数]Oracle函数系列(1)--字符函数   1  BLOG文档结构图    BLOG_Oracle_lhr_函数系列(1)--字符函数.pdf 2  前言部分   2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 常见字符函数(lower.upper.initcap.concat.substr.length.intr.lpad.rpad.trim.chr.ascii.replace.translate

Oracle在线文档下载 【转载自@secooler】

今天有同事询问Oracle在线浏览的手册是否可以下载,确实下载到本地浏览才是非常方便的,之前从@secooler大神这里找过下载链接,特此转载,以备查询,向大神致敬! @secooler 转载地址:http://space.itpub.net/519536/viewspace-567429 oracle不同版本的官方文档在线参考和打包下载地址汇总,罗列在这里,供你我参考. 1.9iOracle官方文档 1)在线浏览 http://www.oracle.com/pls/db92/homepage

android 匿名共享内存ashmem_create_region函数有没有对应的释放函数

问题描述 android 匿名共享内存ashmem_create_region函数有没有对应的释放函数 RT,ashmem_create_region 函数对应的release函数?且不释放会不会影响系统性能? 解决方案 ashmem_create_region返回的是一个文件句柄fd,所以关闭就采用文件关闭函数close就好了. 解决方案二: ashmem_unpin_region(fd, 0, 0);

c语言数组与函数-如何在函数中给已经在主函数中定义好的数组赋值

问题描述 如何在函数中给已经在主函数中定义好的数组赋值 已经在main()中定义了一个长度为20的数组,想在定义的函数中给数组赋值,但一直报错,请问如何修改? void arrin(int *arr) { int i; arr[]={1,1,2,2,3,3,4,5,6,5,6,7,7,8,8,9,9,0,0}; for(i=0;i<20;i++) printf("%d",arr[i]); } main() { int testarr[20]; ............ } 解决方

c++问题-C++的类中怎么在一个函数中引用上一层的函数

问题描述 C++的类中怎么在一个函数中引用上一层的函数 在同一个类中怎么引用先定义的函数来定义函数?比如在一个时期类的定义中,一个日期加1的函数中怎么调用先定义的一个求是否闰年的函数. 解决方案 C++定义隐式转换函数将类转换为内部的一个成员变量c++函数默认参数是一个好的设计吗? 解决方案二: 直接在函数内调用就可以了.不知道你说的上一层是什么意思.是基类的函数还是集合类所属的对象的函数,前者直接调用,或者用 基类类名::函数名后者用构造函数传对象指针 解决方案三: 同一个类中的函数都是通过t

sql 函数大全 比较常用的一些函数整理第1/2页

select语句中只能使用sql函数对字段进行操作(链接sql server),select 字段1 from 表1 where 字段1.IndexOf("云")=1;这条语句不对的原因是indexof()函数不是sql函数,改成sql对应的函数就可以了.left()是sql函数.select 字段1 from 表1 where charindex('云',字段1)=1; 字符串函数对二进制数据.字符串和表达式执行不同的运算.此类函数作用于CHAR.VARCHAR. BINARY. 和