苏州安瑞软件有限公司 2021-12-21 14:48 采纳率: 100%
浏览 44
已结题

sql查询问题对于某一字段连续且重复,只取一

sql查询结果中,对于某一字段连续重复时,只取第一条(或最后一条),例如:

img


以上结果集中,我想让他变成
c_time status
2021-12-21 14:20:39.813 1
2021-12-21 14:22:39.817 0
2021-12-21 14:24:39.817 1


根据status字段,把结果里相连的,重复的行数只取其中一行,要怎么写查询语句?

  • 写回答

5条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2021-12-21 15:15
    关注

    这里要使用开窗函数进行分组排序

    select c_time,status from 
    (select row_number() over(partition by status order by c_time) rn,c_time,status from 表 ) as t
    where rn=1
    

    里面的 order by c_time,加ASC或者DESC可以决定是取第一条还是最后一条


    根据题主补充描述,应该使用以下sql

    create table table1 (index1 int, status1 int);
    insert into table1 values (0, 0);
    insert into table1 values (1, 0);
    insert into table1 values (2, 0);
    insert into table1 values (3, 0);
    insert into table1 values (4, 1);
    insert into table1 values (5, 1);
    insert into table1 values (6, 0);
    insert into table1 values (7, 0);
    insert into table1 values (8, 0);
    insert into table1 values (9, 0);
    insert into table1 values (10, 1);
    insert into table1 values (11, 1);
    insert into table1 values (12, 1);
    insert into table1 values (13, 1);
    insert into table1 values (14, 1);
    insert into table1 values (15, 0);
    insert into table1 values (16, 0);
    
    select index1, status1
      from (select nvl(lag(status1) over(order by index1),-1) last_status,
                   index1,
                   status1
              from table1)  
     where last_status<>status1;
    

    实测和题主要求一致

    img

    以上是在oracle数据库中进行的测试,如果是在其他数据库,nvl空值处理的函数可能要换成对应数据库中的函数

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 12月30日
  • 已采纳回答 12月22日
  • 创建了问题 12月21日

悬赏问题

  • ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
  • ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
  • ¥50 rk3588板端推理
  • ¥250 opencv怎么去掉 数字0中间的斜杠。
  • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
  • ¥250 paddleocr带斜线的0很容易识别成9
  • ¥15 电子档案元素采集(tiff及PDF扫描图片)
  • ¥15 flink-sql-connector-rabbitmq使用
  • ¥15 zynq7015,PCIE读写延时偏大
  • ¥15 使用spss做psm(倾向性评分匹配)遇到问题