hanbingsuoxue 2023-08-23 10:15 采纳率: 100%
浏览 10
已结题

oracle 分组不连续写法

老板们,某个字段不连续会写,分组的这种咋写都不行,有老板给出个招呗
类别 流水号
类别 流水号
JISa 1
JISa 3
JISa 5
JISa 6
JISb 1
JISb 2
JISb 7
JISb 8
JISc 1
JISc 2
JISd 1
想输出
类别 流水号
JISa 1
JISa 3
JISb 2

  • 写回答

10条回答 默认 最新

  • 浩三爷 2023-08-24 09:34
    关注

    要在Oracle数据库中实现类似的分组操作,你可以使用分析函数 LAG 来比较当前行和上一行的值,从而判断是否需要输出。以下是一个示例查询:

    SELECT 类别, 流水号
    FROM (
        SELECT 类别, 流水号,
               LAG(流水号) OVER (PARTITION BY 类别 ORDER BY 流水号) AS 前一个流水号
        FROM your_table
    )
    WHERE 流水号 = 1 OR 流水号 - 前一个流水号 = 1;
    
    

    在这个查询中,子查询使用了分析函数 LAG,它会在当前行中获取上一行的值。根据当前行的流水号和上一行的流水号,我们可以判断是否需要输出。

    如果当前行的流水号是1,那么它是一个新的分组的开头,需要输出。
    如果当前行的流水号与上一行的流水号差值为1,说明当前行是连续的,也需要输出。
    将 your_table 替换为你的实际数据表名。

    执行这个查询后,你会得到需要的输出,其中每个分组的第一个记录和连续的记录都会被包含在结果中。

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

报告相同问题?

问题事件

  • 系统已结题 9月3日
  • 已采纳回答 8月26日
  • 赞助了问题酬金15元 8月23日
  • 提问应符合社区要求 8月23日
  • 展开全部

悬赏问题

  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程