You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按连续记录分组,基于对应列的MAX和MIN获取记录?

实现思路

核心是利用ROW_NUMBER() OVER(PARTITION BY ... ORDER BY ...)对相同物品类型和字段标题的记录分组,再按连续的HISTORY_ID排序,生成组内序号,以此定位分组内的记录顺序,满足类似版本追踪的需求。

示例SQL代码

假设你的表名为item_history,字段定义如下:

  • item_type: 物品类型
  • HISTORY_ID: 连续的历史记录ID
  • field_caption: 需要筛选的字段标题
  • old_value: 字段旧值
  • new_value: 字段新值
  • change_date: 变更日期

按物品类型+字段标题分组,给每组内的记录按HISTORY_ID升序生成组内序号的SQL如下:

SELECT
    item_type,
    HISTORY_ID,
    field_caption,
    old_value,
    new_value,
    change_date,
    ROW_NUMBER() OVER(
        PARTITION BY item_type, field_caption
        ORDER BY HISTORY_ID ASC
    ) AS group_row_num
FROM item_history
-- 可按需添加筛选条件,比如指定目标字段标题
WHERE field_caption = '商品库存';
扩展场景说明
  • 若要对比相邻版本的变更内容,可通过生成的group_row_num做自关联,关联条件为a.item_type = b.item_type AND a.field_caption = b.field_caption AND a.group_row_num = b.group_row_num + 1,快速匹配上一条记录的新旧值。
  • 如需筛选每个分组的最新N条记录,可在外层嵌套查询,添加过滤条件group_row_num <= N。

内容的提问来源于stack exchange,提问作者Nino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 14:20:40