精华内容
下载资源
问答
  • 想要获取上一条或者下一条记录,又不能根据某以字段获取Oracle提供了这样的函数   !--获取一条记录,若没有记录则值为0,其中' lag (news_id,1,0 ) ' news_id为根据哪一个字段进行检查,'1 '为每次偏移量,'...

    想要获取上一条或者下一条记录,又不能根据某以字段获取,Oracle提供了这样的函数

     

    !--获取上一条记录,若没有记录则值为0,其中' lag (news_id,1,0 )news_id为根据哪一个字段进行检查,'1 '为每次偏移量,' 0 ' 为没有上一条时的返回值;

    select n.*,lag(news_id,1,0) over(order by news_id asc) nid from news n;

    执行结果,最右边多了一行,是每一条记录上一条记录的news_id

    !--具体运用,可以获取下一条记录的news_id

    select nid from
    (
        select n.*,lead(news_id,1,0) over(order by news_id asc) nid from news n
    )a where news_id = 3

     

     

     

    !--获取下一条记录,这里不再追述

    select n.*,lead(news_id,1,0) over(order by news_id asc) nid from news n

     

    !--具体运用,可以获取上一条记录的news_id

    select nid from
    (
        select n.*,lead(news_id,1,0) over(order by news_id asc) nid from news n
    )a where news_id = 3

     

    展开全文
  • 电表,大家都知道电表读数并不是真正的耗电量,真正耗电量=此次读数-上次读数 电表设计如下: SQL语句如下,使用Oracle的FIRST_VALUE()和LAST_VALUE()函数实现: SELECT DISTINCT LAST_VALUE (E_VALUE) ...

    假设有如下场景:

    电表,大家都知道电表读数并不是真正的耗电量,真正耗电量=此次读数-上一次读数

    电表设计如下:

    SQL语句如下,使用Oracle的FIRST_VALUE()和LAST_VALUE()函数实现:

    SELECT 
    	DISTINCT
    	LAST_VALUE (E_VALUE) OVER (PARTITION BY E_CODE ORDER BY E_DATE ROWS BETWEEN unbounded preceding AND unbounded following) AS LAST_TIME_VALUE,
    	FIRST_VALUE (E_VALUE) OVER (PARTITION BY E_CODE ORDER BY E_DATE ROWS BETWEEN unbounded preceding AND unbounded following) AS FIRST_TIME_VALUE
    FROM 
    	TABLE_TEST

    结果:

    展开全文
  • 本文给大家收集整理些关于sql获取第一条记录的方法,包括sqlserver获取第一条记录oracle获取一条记录,mysql获取第一条记录,对sql获取第一条记录的方法感兴趣的朋友可以参考下本
  • Oracle_获取最新一条记录

    千次阅读 2018-11-15 16:43:22
    1 select rownum ,a.* from t_table a where rownum <100 2 SELECT * FROM ( SELECT *,ROWNUM rn FROM t ORDER BY inputDate DESC ) WHERE rn = 1

    1

    select rownum ,a.* from t_table a  where rownum <100
    

    2

    SELECT * FROM (
    	SELECT *,ROWNUM rn FROM t ORDER BY inputDate DESC
    ) WHERE rn = 1
    
    展开全文
  • lead()查询当前行与下行数据主键 select zzid,c.p from ( select d.zzid ,lead(d.zzid,1,0) over (order by d.d01007 ) as p from t_d01 d where exists ( select 1 from ( select zzid from t_d01 d1 start ...
    lead()查询当前行与下一行数据主键
     select zzid,c.p from (
      select d.zzid ,lead(d.zzid,1,0) over (order by d.d01007 ) as p from t_d01 d  where exists ( select 1 from  ( select zzid from t_d01 d1 start with d01007 = '001044012025010068' connect by prior d01007=d01027 ) m 
         where d.zzid=m.zzid )    ) c where c.zzid='162';
    lag()查询当前行与下一行数据主键     
    select zzid,c.p from ( select d.zzid ,lag(d.zzid,1,0) over (order by d.d01007 ) as p from t_d01 d  where exists ( select 1 from  ( select zzid from t_d01 d1 start with d01007 = '001044012025010068' connect by prior d01007=d01027 ) m 
         where d.zzid=m.zzid )    ) c where c.zzid='162';
    展开全文
  • oracle获取最新的一条记录

    万次阅读 2018-05-06 13:19:16
    SELECT lybh,cfrq FROM ( SELECT lybh,cfrq,row_number() over(partition BY lybh ORDER BY cfrq DESC) rn FROM t_eb_cfjl WHERE cflx='3' ...标题描述的可能有些不清楚,意思就是获取最近的一条记录,比如这个人...
  • oracle中得到最后一条记录

    千次阅读 2006-12-11 10:39:00
    在数据库oracle的应用中 经常会需要得到数据库的最后一条记录,本人经过测试可以如下操作:select * from (select rownum num, a.* from tabname a) where num = (select count(1) from tabname )如果需要...
  • 转载自... Oracle 查询出来的数据取第一条 select * from (select * from order by ) where rownum=1; select * from (select * from order by desc) where ro
  • oracle过滤某个字段重复记录,只获取一条记录 一,首先想到: 1,关键字distinct 2,group by 3,MAX,MIN这样的函数被称为聚集函数,和GROUP搭配起来用 但均无法实现,执行结果如下 举例: 表名:...
  • 今天正还有同学问了一个问题,怎么把两条不同的记录合并成一条记录从数据库里面拿出来,oracle数据库。 拿到之后首先想的是,分两条sql语句去查,然后在程序里做拼接。经过沟通发现,同学的需求不是这个样子的,是...
  • 利用oracle提供的lead、lag  ...求id=ae2e829ecffd4715a5c163f829c2e0f5的上一条记录和下一条记录一条记录的sql如下: select * from t_company_apply where  id=(select c.p from (select id,lead(id,1,
  • 表1: 表2: 现在要获得repid=48 对应表2的最后一记录,也就是要查处dealid=58 SQL: select *  from mgruserrepresentationsdeal md  wh
  • 对多数据进行分组排序后取每组第一条记录SELECT *FROM (SELECT ROW_NUMBER() OVER(PARTITION BY ORDER BY DESC) LEV,.*FROM )WHERE LEV = 1ORDER BY DESC -- 分组列 -- 排序列 -- 表名 -- 排序列注:.* -- 一定要有...
  • 需求:查询一天中第一条最后一条数据 原始表 select * from table1 ; 步骤1:使用row_number() over() 函数对时间排序,一个正序,一个倒序。 select t.name, t.sex, t.time, row_number() over(order by t....
  • oracle取前5条记录最后5条记录

    千次阅读 2014-05-14 09:24:48
    方法:SELECT * FROM (SELECT t.*,ROWNUM rn,(select count(*) from rc_function t where t.URL like '%X%' ) sumRn FROM rc_function t where t.URL like '%X%' ) where rn sumRn-5 order by ID
  • SELECT * FROM (SELECT * FROM T_WX_USER ORDER BY DBMS_RANDOM.value) WHERE ROWNUM = 1; --随机获取数据库表的一条记录
  • //oracle一条记录select decode(decode(txbs,'无',null,txbs),lag(t.txbs, 1, 0) over(order by t.cjid),'是','否')from qb_app_rycj t //下一条记录select t.id, lead(t.id, 1, 0) over(order by t.sort,t.eidt...
  • 场景:当我们要查询记录,需要对记录分组并且根据排序取到第一条数据。 栗子: create table order(--订单表 id number, orderType varchar2(2),--订单类型 orderNo varchar2(20),--订单号 amt number(2,2),-...
  • mysql 类似 oracle lag函数 mysql 类似 oracle lag函数 分享一下 set @lagfield:=null;...@lagfield 为上一条记录要拿的字段的值 t.id 为表table的一个字段 注意:1.set要加上 没有set 会出现 第一...
  • 在ETL过程中,经常会碰到取结果集的最后或最前一条记录。如取活期存款的当前利率,开户金额,协定利率等。如果不用LOOKUP的方式,如通过游标取或者ETL工具LOOKUP组件什么的,在一条SQL里实现,目前实现有几种方法。1...
  • Oracle获取最新一条数据sql

    千次阅读 2019-07-31 16:48:04
    获取最新一条数据可以根据以下两种方法获取,提供参考如下: 一、select kd.CREATEUSERID as userid,kd.LOCATION,kd.createtime as location from KT_DEVICESTRACK kd where rownum=1 order by kd.createtime 二、...
  • 前言 之前遇到了一次这样的需求,当时没有记录,这一次又赶上了,...表A中存放了集装箱的信息,一个集装箱一条记录,表B中存放了对于集装箱操作的指令,一条指令包括多个集装箱箱号,通过分号;切割(TCIU2347687;...
  • 一条 select *  from cms_article a  where id = (select c.p  from (select t.id, lag(t.id, 1, 0) over(order by t.sort) as p  from cms_article t) c  
  • 今天突然客户提出一个需求,要查一下APP所有客户的最近一次登录记录,因为数据库使用的是oracle有点懵逼,首先分析了一下需求,按用户id分组,按登录时间降序,然后取每个分组的第一条记录就可以搞定了。经过一顿...
  • ORACLE分组取第一条记录

    千次阅读 2018-01-16 10:07:10
    select 查询内容 from ( select row_number() over(partition by 分组字段 order by 排序字段) as rn , 查询字a,查询字段b.. from 表1,表2 where 条件 ) where rn = 1 ; select 查询内容 from ...
  • (1)在TEST表中添加列,标识每个数据分区中薪水最高的人名。 select ID, name, salary, LAST_VALUE(name) OVER (partition by ID order by salary ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING...
  • (1)在TEST表中添加列,标识每个数据分区中薪水最高的人名。 select ID, name, salary, LAST_VALUE(name) OVER (partition by ID order by salary ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 106,192
精华内容 42,476
关键字:

oracle获取最后一条记录